# 使用HttpClient的post,get 封装

2021-03-15 17:33

阅读:586

标签:cookies   key   序列化   null   val   tst   cat   wait   app   

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 Taskstring> 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 Taskstring> PostAsync(string url, string data, Dictionarystring, string> 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 Taskstring> GetAsync(string url, Dictionarystring, string> 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);//把收到的字符串序列化
    }
}

 

# 使用HttpClient的post,get 封装

标签:cookies   key   序列化   null   val   tst   cat   wait   app   

原文地址:https://www.cnblogs.com/netcs/p/12791832.html


评论


亲,登录后才可以留言!