之前写好的,有兴趣的可以看一看。
public class HttpHelplerProvider
{
public readonly HttpClient client;
public HttpHelplerProvider()
{
client = new HttpClient();
}
#region Get请求
/// <summary>
/// 发送Get请求
/// </summary>
/// <param name="url">网站地址</param>
/// <returns>返回获取的Html页面</returns>
public virtual async Task<HttpResponseMessage> GetAsync(string url)
{
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.Get,
url);
return await client.SendAsync(httpRequestMessage);
}
/// <summary>
/// 发送Get请求
/// </summary>
/// <param name="url">网站地址</param>
/// <param name="querystrings">Get参数</param>
/// <returns>返回获取的Html页面</returns>
public virtual async Task<HttpResponseMessage> GetByQueryStringAsync(string url, Dictionary<string, string> querystrings)
{
string uri = await GetUrlParamsAsync(url, querystrings);
return await client.GetAsync(uri);
}
/// <summary>
/// 发送Get请求
/// </summary>
/// <param name="url">网站地址</param>
/// <param name="headers">请求头</param>
/// <returns></returns>
public virtual async Task<HttpResponseMessage> GetHeaderAsync(string url, Dictionary<string, string> headers)
{
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.Get,
url);
foreach (var item in headers)
{
client.DefaultRequestHeaders.Add(item.Key, item.Value);
}
return await client.SendAsync(httpRequestMessage);
}
/// <summary>
/// 发送Get请求
/// </summary>
/// <param name="url">网站地址</param>
/// <param name="querystrings">请求参数</param>
/// <param name="headers">请求头</param>
/// <returns></returns>
public virtual async Task<HttpResponseMessage> GetHeaderAsync(string url, Dictionary<string, string> querystrings, Dictionary<string, string> headers)
{
string uri = await GetUrlParamsAsync(url, querystrings);
HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.Get,
uri);
foreach (var item in headers)
{
client.DefaultRequestHeaders.Add(item.Key, item.Value);
}
return await client.SendAsync(httpRequestMessage);
}
/// <summary>
/// 把Get请求的url和参数拼接起来
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="querystrings">请求参数</param>
/// <returns>拼接的Url</returns>
private async Task<string> GetUrlParamsAsync(string url, Dictionary<string, string> querystrings)
{
string uri = url;
string urlparams = "";
foreach (var item in querystrings)
{
urlparams += $"{item.Key}={item.Value}&";
}
if (uri.Contains("?"))
{
uri = $"{url}&{urlparams}";
}
else
{
uri = $"{url}?{urlparams}";
}
uri = uri.TrimEnd('&');
return await Task.FromResult(uri);
}
#endregion
#region Post请求
/// <summary>
/// Post表单提交
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="data">表单参数</param>
/// <returns></returns>
public virtual async Task<HttpResponseMessage> PostAsync(string url, Dictionary<string, string> data)
{
HttpRequestMessage httpResponseMessage = new HttpRequestMessage(
HttpMethod.Post,
url
);
httpResponseMessage.Content = new FormUrlEncodedContent(data);
return await client.SendAsync(httpResponseMessage);
}
/// <summary>
/// Post表单提交
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="querystrings">url参数</param>
/// <param name="data">表单参数</param>
/// <returns></returns>
public virtual async Task<HttpResponseMessage> PostAsync(string url, Dictionary<string, string> querystrings, Dictionary<string, string> data)
{
string uri = await GetUrlParamsAsync(url, querystrings);
HttpRequestMessage httpResponseMessage = new HttpRequestMessage(
HttpMethod.Post,
uri
);
httpResponseMessage.Content = new FormUrlEncodedContent(data);
return await client.SendAsync(httpResponseMessage);
}
/// <summary>
/// Post请求application/json方式提交
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="data">请求参数</param>
/// <returns></returns>
public virtual async Task<HttpResponseMessage> PostJsonAsync(string url, Dictionary<string, string> data)
{
HttpRequestMessage httpResponseMessage = new HttpRequestMessage(
HttpMethod.Post,
url
);
string jsondata = JsonConvert.SerializeObject(data);
StringContent stringContent = new StringContent(jsondata);
stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
httpResponseMessage.Content = stringContent;
return await client.SendAsync(httpResponseMessage);
}
/// <summary>
/// Post请求application/json方式提交
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="querystrings">url参数</param>
/// <param name="data">请求参数</param>
/// <returns></returns>
public virtual async Task<HttpResponseMessage> PostJsonAsync(string url, Dictionary<string, string> querystrings, Dictionary<string, string> data)
{
string uri = await GetUrlParamsAsync(url, querystrings);
HttpRequestMessage httpResponseMessage = new HttpRequestMessage(
HttpMethod.Post,
uri
);
string jsondata = JsonConvert.SerializeObject(data);
StringContent stringContent = new StringContent(jsondata);
stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
httpResponseMessage.Content = stringContent;
return await client.SendAsync(httpResponseMessage);
}
/// <summary>
/// Post请求提交文件
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="data">请求的参数</param>
/// <param name="fileEntities">请求的文件参数,可多文件上传 key 上传字段名称 value 文件的路径</param>
/// <returns></returns>
public virtual async Task<HttpResponseMessage> PostFileAsync(string url, Dictionary<string, string> data, Dictionary<string, string> fileEntities)
{
HttpRequestMessage httpResponseMessage = new HttpRequestMessage(
HttpMethod.Post,
url
);
MultipartFormDataContent multipartFormDataContent = new MultipartFormDataContent();
foreach (var item in data)
{
multipartFormDataContent.Add(new StringContent(item.Value), item.Key);
}
foreach (var file in fileEntities)
{
multipartFormDataContent.Add(new ByteArrayContent(File.ReadAllBytes(file.Value)), file.Key, Path.GetFileName(file.Value));
}
httpResponseMessage.Content = multipartFormDataContent;
return await client.SendAsync(httpResponseMessage);
}
/// <summary>
/// Post请求提交文件
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="querystrings">url参数</param>
/// <param name="data">请求的参数</param>
/// <param name="fileEntities">请求的文件参数,可多文件上传 key 上传字段名称 value 文件的路径</param>
/// <returns></returns>
public virtual async Task<HttpResponseMessage> PostFileAsync(string url, Dictionary<string, string> querystrings, Dictionary<string, string> data, Dictionary<string, string> fileEntities)
{
string uri = await GetUrlParamsAsync(url, querystrings);
HttpRequestMessage httpResponseMessage = new HttpRequestMessage(
HttpMethod.Post,
uri
);
MultipartFormDataContent multipartFormDataContent = new MultipartFormDataContent();
foreach (var item in data)
{
multipartFormDataContent.Add(new StringContent(item.Value), item.Key);
}
foreach (var file in fileEntities)
{
multipartFormDataContent.Add(new ByteArrayContent(File.ReadAllBytes(file.Value)), file.Key, Path.GetFileName(file.Value));
}
httpResponseMessage.Content = multipartFormDataContent;
return await client.SendAsync(httpResponseMessage);
}
#endregion
}
文章转载自Hadoop大数据开发,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




