在使用这个方法之前,保证framework的版本在4.0以上,经测试4.0的时候是不可以的,
重点在于加上以下代码
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls12;
ServicePointManager.Expect100Continue = true;
ServicePointManager.ServerCertificateValidationCallback = (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) => { return true; };
以下是完整的代码,伸手党,自己复制改动
[HttpPost]
public JsonResult CheckOrder(string messageNo)
{
string url = ConfigurationManager.AppSettings["queryAddress"].ToString();
string keyid = ConfigurationManager.AppSettings["keyid"].ToString();
Dictionary<string, string> myDictionary = new Dictionary<string, string>();
myDictionary.Add("keyid", keyid);
string postParaJsonStr = " { \"messageNo\":\"" + messageNo + "\" } ";
string outResStr = "";
bool res = HttpPost(url, myDictionary, postParaJsonStr, ref outResStr);
string state = "";
string errorinfo = "";
if (res)
{
JToken jt = JsonConvert.DeserializeObject<JToken>(outResStr);
state = jt["status"].ToString();
errorinfo = jt["errorinfo"].ToString();
}
return Json(new { state = state, errorinfo = errorinfo });
}
public bool HttpPost(string Url, Dictionary<string, string> myDictionary, string postDataStr, ref string outResStr)
{
try
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls12;
ServicePointManager.Expect100Continue = true;
ServicePointManager.ServerCertificateValidationCallback = (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) => { return true; };
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = "POST";
request.ContentType = "application/json;charset=UTF-8";
request.KeepAlive = false;
//request.ProtocolVersion = HttpVersion.Version10;
//request.ContentType = "application/x-www-form-urlencoded";
//request.Accept = "text/html, application/xhtml+xml, */*";
//request.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36";
//request.AllowAutoRedirect = this._AllowAutoRedirect;
//request.CookieContainer = new CookieContainer();
//request.Referer = this._Referer;
request.Timeout = 120000;
//request.ReadWriteTimeout = 120000;
//request.ServicePoint.Expect100Continue = true;
//request.ServicePoint.ConnectionLimit = 1024;
//request.KeepAlive = true;
foreach (var item in myDictionary)
{
request.Headers.Add(item.Key, item.Value);
}
Encoding encoding = Encoding.UTF8;
byte[] postData = encoding.GetBytes(postDataStr);
request.ContentLength = postData.Length;
Stream myRequestStream = request.GetRequestStream();
myRequestStream.Write(postData, 0, postData.Length);
myRequestStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, encoding);
outResStr = myStreamReader.ReadToEnd();
myStreamReader.Close();
myResponseStream.Close();
return true;
}
catch (Exception ex)
{
outResStr = ex.Message;
return false;
}
}
简单粗暴的做个记录