基于HttpClient封装的请求类

2021-04-08 23:25

阅读:546

标签:string   ons   request   foreach   sum   for   ada   headers   序列化   

using ICSharpCode.SharpZipLib.GZip;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

///


/// 基于HttpClient封装的请求类
///

public class HttpRequest
{
///
/// 使用post方法异步请求
///

/// 目标链接
/// 发送的参数字符串,只能用json
/// 返回的字符串
public static async Task PostAsyncJson(string url, string json)
{
HttpClient client = new HttpClient();
HttpContent content = new StringContent(json);
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
HttpResponseMessage response = await client.PostAsync(url, content);
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
return responseBody;
}

///


/// 使用post方法异步请求
///

/// 目标链接
/// 发送的参数字符串
/// 返回的字符串
public static async Task PostAsync(string url, string data, Dictionary header = null, bool Gzip = false)
{
HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false });
HttpContent content = new StringContent(data);
if (header != null)
{
client.DefaultRequestHeaders.Clear();
foreach (var item in header)
{
client.DefaultRequestHeaders.Add(item.Key, item.Value);
}
}
HttpResponseMessage response = await client.PostAsync(url, content);
response.EnsureSuccessStatusCode();
string responseBody = "";
if (Gzip)
{
GZipInputStream inputStream = new GZipInputStream(await response.Content.ReadAsStreamAsync());
responseBody = new StreamReader(inputStream).ReadToEnd();
}
else
{
responseBody = await response.Content.ReadAsStringAsync();

}
return responseBody;
}

///


/// 使用get方法异步请求
///

/// 目标链接
/// 返回的字符串
public static async Task GetAsync(string url, Dictionary header = null, bool Gzip = false)
{

HttpClient client = new HttpClient(new HttpClientHandler() { UseCookies = false });
if (header != null)
{
client.DefaultRequestHeaders.Clear();
foreach (var item in header)
{
client.DefaultRequestHeaders.Add(item.Key, item.Value);
}
}
HttpResponseMessage response = await client.GetAsync(url);
response.EnsureSuccessStatusCode();//用来抛异常的
string responseBody = "";
if (Gzip)
{
GZipInputStream inputStream = new GZipInputStream(await response.Content.ReadAsStreamAsync());
responseBody = new StreamReader(inputStream).ReadToEnd();
}
else
{
responseBody = await response.Content.ReadAsStringAsync();

}
return responseBody;
}

///


/// 使用post返回异步请求直接返回对象
///

/// 返回对象类型
/// 请求对象类型
/// 请求链接
/// 请求对象数据
/// 请求返回的目标对象
public static async Task PostObjectAsync(string url, T2 obj)
{
String json = JsonConvert.SerializeObject(obj);
string responseBody = await PostAsyncJson(url, json); //请求当前账户的信息
return JsonConvert.DeserializeObject(responseBody);//把收到的字符串序列化
}

///


/// 使用Get返回异步请求直接返回对象
///

/// 请求对象类型
/// 请求链接
/// 返回请求的对象
public static async Task GetObjectAsync(string url)
{
string responseBody = await GetAsync(url); //请求当前账户的信息
return JsonConvert.DeserializeObject(responseBody);//把收到的字符串序列化
}
}
————————————————
原文链接:https://blog.csdn.net/zanllp/article/details/85501932

基于HttpClient封装的请求类

标签:string   ons   request   foreach   sum   for   ada   headers   序列化   

原文地址:https://www.cnblogs.com/chenboyhd/p/12454478.html


评论


亲,登录后才可以留言!