版权声明:未经本人允许,必须声明原文转载地址和作者! https://blog.csdn.net/liuchang19950703/article/details/87916117
namespace Common
{
public class HttpRequestHelper
{
/// <summary>
/// Get请求(同步)
/// </summary>
/// <param name="url">请求地址</param>
/// <returns></returns>
public static void HttpGetRequest(string url, out string returnMsg)
{
try
{
var getRequest = CreateHttpRequest(url, "GET");
var getResponse = getRequest.GetResponse() as HttpWebResponse;
returnMsg = GetHttpResponse(getResponse, "GET");
}
catch (Exception ex)
{
returnMsg = ex.Message;
}
}
/// <summary>
/// Get请求(异步)
/// </summary>
/// <param name="url">请求地址</param>
public static async void HttpGetRequestAsync(string url)
{
string strGetResponse = string.Empty;
try
{
var getRequest = CreateHttpRequest(url, "GET");
var getResponse = await getRequest.GetResponseAsync() as HttpWebResponse;
strGetResponse = GetHttpResponse(getResponse, "GET");
}
catch (Exception ex)
{
strGetResponse = ex.Message;
}
}
/// <summary>
/// Post请求(同步)
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="postJsonData">请求参数字符串</param>
/// <returns></returns>
public static void HttpPostRequest(string url, string postJsonData, out string returnMsg)
{
try
{
var postRequest = CreateHttpRequest(url, "POST", postJsonData);
var postResponse = postRequest.GetResponse() as HttpWebResponse;
returnMsg = GetHttpResponse(postResponse, "POST");
}
catch (Exception ex)
{
returnMsg = ex.Message;
}
}
/// <summary>
/// Post请求(异步)
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="postJsonData">请求参数字符串</param>
public static async void HttpPostRequestAsync(string url, string postData)
{
string strPostReponse = string.Empty;
try
{
var postRequest = CreateHttpRequest(url, "POST", postData);
var postResponse = await postRequest.GetResponseAsync() as HttpWebResponse;
strPostReponse = GetHttpResponse(postResponse, "POST");
}
catch (Exception ex)
{
strPostReponse = ex.Message;
}
if (strPostReponse != "true")
{
Console.WriteLine("--> reslut : " + strPostReponse);
Console.WriteLine(postData);
}
}
#region 辅助方法
/// <summary>
/// 创建Request对象【Get】/【Post】
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="requestType">请求类型</param>
/// <param name="strJson">请求参数数组</param>
/// <returns></returns>
private static HttpWebRequest CreateHttpRequest(string url, string requestType, params object[] strJson)
{
HttpWebRequest request = null;
const string get = "GET";
const string post = "POST";
if (string.Equals(requestType, get, StringComparison.OrdinalIgnoreCase))
{
request = CreateGetHttpWebRequest(url);
}
if (string.Equals(requestType, post, StringComparison.OrdinalIgnoreCase))
{
request = CreatePostHttpWebRequest(url, strJson[0].ToString());
}
return request;
}
/// <summary>
/// 创建Request对象【Get】
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
private static HttpWebRequest CreateGetHttpWebRequest(string url)
{
var getRequest = HttpWebRequest.Create(url) as HttpWebRequest;
getRequest.Method = "GET";
getRequest.Timeout = 5000;
getRequest.ContentType = "text/html;charset=UTF-8";
getRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
return getRequest;
}
/// <summary>
/// 创建Request对象【Post】
/// </summary>
/// <param name="url"></param>
/// <param name="postData"></param>
/// <returns></returns>
private static HttpWebRequest CreatePostHttpWebRequest(string url, string postData)
{
var postRequest = HttpWebRequest.Create(url) as HttpWebRequest;
postRequest.KeepAlive = false;
postRequest.Timeout = 5000;
postRequest.Method = "POST";
postRequest.ContentType = "application/x-www-form-urlencoded";
postRequest.ContentLength = postData.Length;
postRequest.AllowWriteStreamBuffering = false;
StreamWriter writer = new StreamWriter(postRequest.GetRequestStream(), Encoding.ASCII);
writer.Write(postData);
writer.Flush();
return postRequest;
}
/// <summary>
/// 获取Response对象返回的值【Get】/【Post】
/// </summary>
/// <param name="response">Response返回对象</param>
/// <param name="requestType">请求Response返回对象的请求类型</param>
/// <returns></returns>
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;
}
#endregion
}
}