170 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			C#
		
	
	
	
| 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;
 | |
| using System.Threading.Tasks;
 | |
| 
 | |
| namespace BLL.Common
 | |
| {
 | |
|     public class HttpHelper
 | |
|     {
 | |
|         /// <summary>
 | |
|         /// Http Get Request
 | |
|         /// </summary>
 | |
|         /// <param name="url"></param>
 | |
|         /// <returns></returns>
 | |
|         public static string HttpGetRequest(string url, string token ="")
 | |
|         {
 | |
|             string strGetResponse = string.Empty;
 | |
|             try
 | |
|             {
 | |
|                 var getRequest = CreateHttpRequest(url,"GET", token);
 | |
|                 var getResponse = getRequest.GetResponse() as HttpWebResponse;
 | |
|                 strGetResponse = GetHttpResponse(getResponse, "GET");
 | |
|             }
 | |
|             catch (Exception ex)
 | |
|             {
 | |
|                 strGetResponse = ex.Message;
 | |
|             }
 | |
|             return strGetResponse;
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// Http Post Request
 | |
|         /// </summary>
 | |
|         /// <param name="url"></param>
 | |
|         /// <param name="postJsonData"></param>
 | |
|         /// <returns></returns>
 | |
|         public static string HttpPostRequest(string url, string postJsonData,string token)
 | |
|         {
 | |
|             BLL.ErrLogInfo.WriteLog("token=" + token);
 | |
|             string strPostReponse = string.Empty;
 | |
|             try
 | |
|             {
 | |
|                 var postRequest = CreateHttpRequest(url, "POST",token, postJsonData);
 | |
|                 var postResponse = postRequest.GetResponse() as HttpWebResponse;
 | |
|                 strPostReponse = GetHttpResponse(postResponse, "POST");
 | |
|                 BLL.ErrLogInfo.WriteLog("result=" + strPostReponse);
 | |
|             }
 | |
|             catch (Exception ex)
 | |
|             {
 | |
|                 strPostReponse = ex.Message;
 | |
|                 BLL.ErrLogInfo.WriteLog("error=" + ex.Message);
 | |
|             }
 | |
|             return strPostReponse;
 | |
|         }
 | |
|         private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
 | |
|         {
 | |
|             return true; //总是接受   
 | |
|         }
 | |
| 
 | |
|         public static string PostJsonByHttps(string url, string jsonParams)
 | |
|         {
 | |
|             ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
 | |
|             HttpWebRequest request = null;
 | |
|             CookieContainer cookie = new CookieContainer();
 | |
|             //HTTPSQ请求
 | |
|             ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
 | |
|             request = WebRequest.Create(url) as HttpWebRequest;
 | |
|             request.CookieContainer = cookie;
 | |
|             request.ProtocolVersion = HttpVersion.Version11;
 | |
|             request.Method = "POST";
 | |
|             request.ContentType = "application/x-www-form-urlencoded";
 | |
|             request.KeepAlive = true;
 | |
|             byte[] byteData = Encoding.UTF8.GetBytes(jsonParams);
 | |
|             int length = byteData.Length;
 | |
|             request.ContentLength = length;
 | |
| 
 | |
|             using (Stream stream = request.GetRequestStream())
 | |
|             {
 | |
|                 stream.Write(byteData, 0, byteData.Length);
 | |
|             }
 | |
| 
 | |
|             var response = (HttpWebResponse)request.GetResponse();
 | |
| 
 | |
|             using (StreamReader st = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("utf-8")))
 | |
|             {
 | |
|                 return st.ReadToEnd().ToString();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         private static HttpWebRequest CreateHttpRequest(string url, string requestType, string token, params object[] strJson)
 | |
|         {
 | |
|             HttpWebRequest request = null;
 | |
|             const string get = "GET";
 | |
|             const string post = "POST";
 | |
|             if (string.Equals(requestType, get, StringComparison.OrdinalIgnoreCase))
 | |
|             {
 | |
|                 request = CreateGetHttpWebRequest(url,token);
 | |
|             }
 | |
|             if (string.Equals(requestType, post, StringComparison.OrdinalIgnoreCase))
 | |
|             {
 | |
|                 request = CreatePostHttpWebRequest(url, strJson[0].ToString(),token);
 | |
|             }
 | |
|             return request;
 | |
|         }
 | |
| 
 | |
|         private static HttpWebRequest CreateGetHttpWebRequest(string url,string token)
 | |
|         {
 | |
| 
 | |
|             var getRequest = HttpWebRequest.Create(url) as HttpWebRequest;
 | |
|             if (!string.IsNullOrEmpty(token))
 | |
|             {
 | |
|                 getRequest.ContentType = "application/json";
 | |
|                 getRequest.Headers.Add("token", token);
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 getRequest.ContentType = "text/html;charset=UTF-8";
 | |
|             }
 | |
|             getRequest.Method = "GET";
 | |
|             getRequest.Timeout = 5000;
 | |
|          
 | |
|             getRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
 | |
|             return getRequest;
 | |
|         }
 | |
|         private static HttpWebRequest CreatePostHttpWebRequest(string url, string postData,string token)
 | |
|         {
 | |
|             var postRequest = HttpWebRequest.Create(url) as HttpWebRequest;
 | |
|             postRequest.KeepAlive = false;
 | |
|             postRequest.Method = "POST";
 | |
|             postRequest.ContentType = "application/x-www-form-urlencoded";
 | |
|             if (!string.IsNullOrEmpty(token))
 | |
|             {
 | |
|                 postRequest.ContentType = "application/json";
 | |
|                 postRequest.Headers.Add("token_app", token);
 | |
|             }
 | |
|             postRequest.ContentLength = postData.Length;
 | |
|             postRequest.AllowWriteStreamBuffering = false;
 | |
|             StreamWriter writer = new StreamWriter(postRequest.GetRequestStream(), Encoding.ASCII);
 | |
|             writer.Write(postData);
 | |
|             writer.Flush();
 | |
|             return postRequest;
 | |
|         }
 | |
| 
 | |
|         private static string GetHttpResponse(HttpWebResponse response, string requestType)
 | |
|         {
 | |
|             var responseResult = "";
 | |
|             const string post = "POST";
 | |
|             string encoding = "UTF-8";
 | |
|             if (string.Equals(requestType, post, StringComparison.OrdinalIgnoreCase))
 | |
|             {
 | |
|                 encoding = response.ContentEncoding;
 | |
|                 if (encoding == null || encoding.Length < 1)
 | |
|                 {
 | |
|                     encoding = "UTF-8";
 | |
|                 }
 | |
|             }
 | |
|             using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding)))
 | |
|             {
 | |
|                 responseResult = reader.ReadToEnd();
 | |
|             }
 | |
|             return responseResult;
 | |
|         }
 | |
|     }
 | |
| }
 |