年度变更建库软件5.0版本
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.

144 lines
5.1 KiB

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using KGIS.Framework.Utils;
namespace Kingo.PluginServiceInterface.Helper
{
public static class HttpHelper
{
public static T PostResponse<T>(string url, object Data)
where T : class, new()
{
T ret = null;
try
{
HttpWebRequest reqest = (HttpWebRequest)WebRequest.Create(url);
reqest.Method = "POST";
reqest.ContentType = "application/json";
Stream stream = reqest.GetRequestStream();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(Data));
stream.Write(bs, 0, bs.Length);
stream.Flush();
stream.Close();
HttpWebResponse response = (HttpWebResponse)reqest.GetResponse();
Stream stream1 = response.GetResponseStream();
//获取响应内容
string result = string.Empty;
using (StreamReader reader = new StreamReader(stream1, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
ret = JsonConvert.DeserializeObject<T>(result);
}
catch (Exception ex)
{
LogAPI.Debug("PostResponse异常:" + ex.Message);
LogAPI.Debug("PostResponse异常:" + ex.StackTrace);
}
return ret;
}
/// <summary>
/// get请求 返回类型变量
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public static T GetResponse<T>(string url)
where T : class, new()
{
if (url.StartsWith("https"))
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
var httpClient = new HttpClient();
//httpClient.DefaultRequestHeaders.Accept.Add(
// new MediaTypeWithQualityHeaderValue("application/json"));
T result = default(T);
HttpResponseMessage response = httpClient.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
Task<string> t = response.Content.ReadAsStringAsync();
string str = t.Result;
result = JsonConvert.DeserializeObject<T>(str);
return result;
}
return null;
}
public static Task<T> GetResponseAsync<T>(string url)
where T : class, new()
{
var task = Task.Run(() =>
{
if (url.StartsWith("https"))
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
var httpClient = new HttpClient();
//httpClient.DefaultRequestHeaders.Accept.Add(
// new MediaTypeWithQualityHeaderValue("application/json"));
T result = default(T);
HttpResponseMessage response = httpClient.GetAsync(url).Result;
if (response.IsSuccessStatusCode)
{
Task<string> t = response.Content.ReadAsStringAsync();
string str = t.Result;
result = JsonConvert.DeserializeObject<T>(str);
return result;
}
return null;
});
return task;
}
public static Task<T> PostResponseAsync<T>(string url, object Data)
where T : class, new()
{
var task = Task.Run(() =>
{
HttpWebRequest reqest = (HttpWebRequest)WebRequest.Create(url);
reqest.Method = "POST";
reqest.ContentType = "application/json";
Stream stream = reqest.GetRequestStream();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(Data));
stream.Write(bs, 0, bs.Length);
stream.Flush();
stream.Close();
HttpWebResponse response = (HttpWebResponse)reqest.GetResponse();
Stream stream1 = response.GetResponseStream();
//获取响应内容
string result = string.Empty;
using (StreamReader reader = new StreamReader(stream1, Encoding.UTF8))
{
result = reader.ReadToEnd();
}
T ret = JsonConvert.DeserializeObject<T>(result);
return ret;
});
return task;
}
}
public class ResultInfo<T>
{
public T Data { get; set; }
public int Total { get; set; }
public int Code { get; set; }
public int Status { get; set; }
public string Error { get; set; }
public string Message { get; set; }
public int SuccessCount { get; set; }
public int FailCount { get; set; }
}
}