using Newtonsoft.Json.Linq;
using NXWMS.Client.Code.Models;
using NXWMS.Client.Code.Serialize;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using System.Text;
namespace NXWMS.Client.Code.Net
{
///
/// Http请求帮助类
///
public class HttpRequestHelper
{
///
/// 票据
///
public string _Ticket { get; set; }
private static bool RemoteCertificateValidate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors error)
{
return true;
}
///
/// Get请求返回响应
///
///
///
///
public string GET(string url, string parms)
{
ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072
| SecurityProtocolType.Ssl3
| SecurityProtocolType.Tls
| (SecurityProtocolType)0x300
| (SecurityProtocolType)0xC00;
url = url + parms;
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
request.Method = "GET";
HttpWebResponse res;
try
{
res = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
res = (HttpWebResponse)ex.Response;
}
StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
string content = sr.ReadToEnd();
return content;
}
///
/// Post请求返回响应
///
///
///
///
///
public string POST(string url, string pramstr = null, Dictionary param = null)
{
HttpWebRequest request = null;
if (url.Contains("https://"))
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(RemoteCertificateValidate);
request = (HttpWebRequest)WebRequest.CreateDefault(new Uri(url));
}
else
{
request = (HttpWebRequest)WebRequest.Create(url);
}
//ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;
//ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072
// | SecurityProtocolType.Ssl3
// | SecurityProtocolType.Tls
// | (SecurityProtocolType)0x300
// | (SecurityProtocolType)0xC00; ;
//var request = WebRequest.Create(url) as HttpWebRequest;
//CookieContainer cookieContainer = new CookieContainer();
//request.CookieContainer = cookieContainer;
//request.AllowAutoRedirect = true;
//request.MaximumResponseHeadersLength = 1024;
request.Method = "POST"; //请求方式为post
//request.AllowAutoRedirect = true;
//request.MaximumResponseHeadersLength = 1024;
request.ContentType = "application/json; charset=utf-8";
if (!string.IsNullOrWhiteSpace(_Ticket))
{
request.Headers.Add("Authorization", "Bearer " + _Ticket);
}
JObject json = new JObject();
string jsonstring;
if (param != null)
{
if (param.Count != 0)
{
foreach (var item in param)
{
json.Add(item.Key, item.Value);
}
}
jsonstring = json.ToString();
}
else if (!string.IsNullOrWhiteSpace(pramstr))
{
jsonstring = pramstr;
}
else
{
jsonstring = "";
}
var jsonbyte = Encoding.UTF8.GetBytes(jsonstring);
using (var postStream = request.GetRequestStream())
{
postStream.Write(jsonbyte, 0, jsonbyte.Length);
}
// postStream.Close();
HttpWebResponse res;
StreamReader sr;
string content;
try
{
res = (HttpWebResponse)request.GetResponse();
sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
content = sr.ReadToEnd();
}
catch (WebException ex)
{
var failResult = new OperateInResultInfo { AffectedRows = 0, Status = OperateInStatus.CodeError, Message = ex.Message };
//res = (HttpWebResponse)ex.Response;
//sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
content = JsonHandleHelper.SerializeObject(failResult);
}
return content;
}
///
/// Post数据流
///
///
///
///
///
public string POSTStream(string url, byte[] arrAy, string parms)
{
HttpWebResponse res;
try
{
ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072
| SecurityProtocolType.Ssl3
| SecurityProtocolType.Tls
| (SecurityProtocolType)0x300
| (SecurityProtocolType)0xC00; ;
ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate;
Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
byte[] arrB = arrAy;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = arrB.Length;
Stream outStream = request.GetRequestStream();
outStream.Write(arrB, 0, arrB.Length);
outStream.Close();
res = (HttpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
res = (HttpWebResponse)ex.Response;
}
StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
string content = sr.ReadToEnd();
return content;
}
}
}