113 lines
3.2 KiB
C#
113 lines
3.2 KiB
C#
using AllBase;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.IO.Compression;
|
|
using System.Linq;
|
|
using System.Net;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using WxOrder.Framework.Commons;
|
|
|
|
namespace Work.KJDServer.API
|
|
{
|
|
public class KJDServerHttp
|
|
{
|
|
public static async Task<string> PostAsync(string url, string data)
|
|
{
|
|
if (url.StartsWith("/"))
|
|
url = url.Substring(1);
|
|
url = BaseClass.LoginApiUrl + "/wxxd_" + url + "?obj=" + BaseClass.MainPath + "/wxxd_" + url;
|
|
string sign = UserLogin.GetSignaturex();
|
|
data = $"{sign}&{data}";
|
|
return await _postAsync(url, data);
|
|
}
|
|
public static async Task<T> PostAsync<T>(string url, string data, JsonSerializerSettings settings = null) where T : Result, new()
|
|
{
|
|
try
|
|
{
|
|
string result = await PostAsync(url, data);
|
|
return JsonConvert.DeserializeObject<T>(result, settings);
|
|
}
|
|
catch (JsonException)
|
|
{
|
|
return new T { Code = 0, Msg = "数据解析失败" };
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return new T { Code = 0, Msg = ex.Message };
|
|
}
|
|
}
|
|
|
|
|
|
private static async Task<string> _postAsync(string url, string postData, int timeOut = -1)
|
|
{
|
|
HttpWebResponse response = null;
|
|
string result;
|
|
try
|
|
{
|
|
HttpWebRequest request;
|
|
request = (HttpWebRequest)WebRequest.Create(url);
|
|
|
|
request.KeepAlive = true;
|
|
request.ContentType = "application/x-www-form-urlencoded; charset=utf-8";
|
|
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36";
|
|
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
|
|
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
|
|
|
|
request.Method = "POST";
|
|
request.ServicePoint.Expect100Continue = false;
|
|
|
|
string body = postData;
|
|
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
|
|
request.ContentLength = postBytes.Length;
|
|
Stream stream = request.GetRequestStream();
|
|
stream.Write(postBytes, 0, postBytes.Length);
|
|
stream.Close();
|
|
|
|
response = (HttpWebResponse)await request.GetResponseAsync();
|
|
}
|
|
catch (WebException ex)
|
|
{
|
|
if (ex.Status == WebExceptionStatus.ProtocolError)
|
|
{
|
|
response = (HttpWebResponse)ex.Response;
|
|
result = ReadResponse(response);
|
|
return result;
|
|
}
|
|
else return ex.Message;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
if (response != null) response.Close();
|
|
return e.Message;
|
|
}
|
|
result = ReadResponse(response);
|
|
return result;
|
|
|
|
}
|
|
|
|
public static string ReadResponse(HttpWebResponse response, Encoding encoding = null)
|
|
{
|
|
using (Stream responseStream = response.GetResponseStream())
|
|
{
|
|
Stream streamToRead = responseStream;
|
|
if (response.ContentEncoding.ToLower().Contains("gzip"))
|
|
{
|
|
streamToRead = new GZipStream(streamToRead, CompressionMode.Decompress);
|
|
}
|
|
else if (response.ContentEncoding.ToLower().Contains("deflate"))
|
|
{
|
|
streamToRead = new DeflateStream(streamToRead, CompressionMode.Decompress);
|
|
}
|
|
if (encoding == null) encoding = Encoding.UTF8;
|
|
using (StreamReader streamReader = new StreamReader(streamToRead, encoding))
|
|
{
|
|
return streamReader.ReadToEnd();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|