原本是在JavaScript中使用AJAX取回资料并做处理,再把处理过的资料跟表单一起送出,
但因为好像会有安全性的问题,改成在后端实作来达到一样的效果,
有点不知道该怎么注解,就先记录下来
原本在前端呼叫所取回的资料:
{ "message": "档案资讯", "files": [ { "Id": 123, "FileName": "测试图.png", "CreateTime": "2020-05-25T14:25:44.857", "Status": "未扫毒" } ] }
需要用到的资料有"Id"跟"FileName"
在程式码中加入类别,虽然不需用到"CreateTime"跟"Status",但回传多少栏位就要完整宣告
public class JsonVO { public string message { get; set; } public List<files> files { get; set; } } public class files { public string Id { get; set; } public string FileName { get; set; } public string CreateTime { get; set; } public string Status { get; set; } }
Using
using System.Net;using System.Net.Security;using System.Security.Cryptography.X509Certificates;
主要程式码
private String GetFileContent() { string content_str = string.Empty; try { string rssContent = string.Empty; ServicePointManager.ServerCertificateValidationCallback += ValidateRemoteCertificate; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; using (WebClient wc = new WebClient()) { wc.Encoding = Encoding.GetEncoding("utf-8"); rssContent = wc.DownloadString(----这边放自己的url----); } JsonVO jsonVO = JsonConvert.DeserializeObject<JsonVO>(rssContent); if (jsonVO != null) { //取回资料并做处理 for (var i = 0; i <= jsonVO.files.Count - 1; i++) { content_str += "ID = " + jsonVO.files[i].Id + ",FileName = " + jsonVO.files[i].FileName; } } } catch (Exception ex) { } return content_str; }
private bool ValidateRemoteCertificate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error){ if (error == System.Net.Security.SslPolicyErrors.None) { return true; } Console.WriteLine("X509Certificate [{0}] Policy Error: '{1}'", cert.Subject, error.ToString()); return false;}