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.
115 lines
4.4 KiB
115 lines
4.4 KiB
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();
|
|
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();
|
|
}
|
|
}
|
|
}
|
|
|