C#公共类
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

116 lines
4.4 KiB

3 years ago
using System;
using System.Collections.Generic;
using System.IO;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
namespace Common.Helper.Request
{
public class RequestHelper
{
/// <summary>
/// get方法获取文件流
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static async Task<Stream> GetFileStream(string url)
{
using var client = new HttpClient();
var msg = await client.GetAsync($"{url}");
if (!msg.IsSuccessStatusCode) return null;
// create a new file to write to
var contentStream = await msg.Content.ReadAsStreamAsync();
3 years ago
return contentStream;
}
/// <summary>
/// get方法返回实体对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="url"></param>
/// <returns></returns>
public static async Task<T> GetEntity<T>(string url)
{
using var client = new HttpClient();
var msg = await client.GetAsync($"{url}");
if (!msg.IsSuccessStatusCode) return default;
var content = await msg.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<T>(content);
}
/// <summary>
/// get方法返回文本字符
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static async Task<string> GetString(string url)
{
using var client = new HttpClient();
var msg = await client.GetAsync($"{url}");
if (!msg.IsSuccessStatusCode) return default;
return await msg.Content.ReadAsStringAsync();
}
/// <summary>
/// post方法返回文件流
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="url"></param>
/// <param name="entity"></param>
/// <returns></returns>
public static async Task<Stream> PostFileStream<T>(string url,T entity)
{
using var client = new HttpClient();
var msg = await client.PostAsync($"{url}", new StringContent(JsonConvert.SerializeObject(entity), Encoding.UTF8, "application/json"));
if (!msg.IsSuccessStatusCode) return null;
// create a new file to write to
var contentStream = await msg.Content.ReadAsStreamAsync(); // get the actual content stream
return contentStream;
}
/// <summary>
/// post方法返回实体对象
/// </summary>
/// <typeparam name="TR"></typeparam>
/// <typeparam name="T"></typeparam>
/// <param name="url"></param>
/// <param name="entity"></param>
/// <returns></returns>
public static async Task<TR> PostEntity<TR,T>(string url,T entity)
{
using var client = new HttpClient();
var msg = await client.PostAsync($"{url}", new StringContent(JsonConvert.SerializeObject(entity), Encoding.UTF8, "application/json"));
if (!msg.IsSuccessStatusCode) return default;
var content = await msg.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<TR>(content);
}
public static async Task<TR> PostFormDataEntity<TR>(string url, FormUrlEncodedContent formUrl)
{
using var client = new HttpClient();
var msg = await client.PostAsync($"{url}", formUrl);
if (!msg.IsSuccessStatusCode) return default;
var content = await msg.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<TR>(content);
}
/// <summary>
/// post方法返回文本字符
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="url"></param>
/// <param name="entity"></param>
/// <returns></returns>
public static async Task<string> PostString<T>(string url,T entity)
{
using var client = new HttpClient();
var msg = await client.PostAsync($"{url}", new StringContent(JsonConvert.SerializeObject(entity), Encoding.UTF8, "application/json"));
if (!msg.IsSuccessStatusCode) return default;
return await msg.Content.ReadAsStringAsync();
}
}
}