using HH.WCS.JiaTong.api;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http.Headers;
using System.Security.Cryptography;
using System.Text;
namespace HH.WCS.JiaTong.util
{
public class HttpHelper
{
public string WebPost(string url, string postData, string cotentType = "application/json")
{
Console.WriteLine(url);
WebRequest request = WebRequest.Create(url);
request.Method = "POST";
//string postData = JsonConvert.SerializeObject(data); ;
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = cotentType;
request.ContentLength = byteArray.Length;
request.Timeout = 3000;
try
{
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
//Console.WriteLine(((HttpWebResponse)response).StatusDescription);
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream, Encoding.UTF8);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
return "";
}
}
public string MesWebPost(string url, string postData, string cotentType = "application/json")
{
Console.WriteLine(url);
WebRequest request = WebRequest.Create(url);
request.Method = "POST";
//string postData = JsonConvert.SerializeObject(data); ;
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = cotentType;
request.ContentLength = byteArray.Length;
request.Timeout = 3000;
// 设置 Accept 请求头(需转换为 HttpWebRequest)
if (request is HttpWebRequest httpRequest)
{
httpRequest.Accept = cotentType; // 直接赋值 Accept 属性
}
//获取ReqVerify
request.Headers.Add("AppKey", "7a386958-fc28-44c4-9bcf-db871fc502a9");
try
{
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
//Console.WriteLine(((HttpWebResponse)response).StatusDescription);
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream, Encoding.UTF8);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
return "";
}
}
public string WebPostMobox(string url, string postData, string cotentType = "application/json")
{
Console.WriteLine(url);
WebRequest request = WebRequest.Create(url);
request.Method = "POST";
//string postData = JsonConvert.SerializeObject(data); ;
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = cotentType;
request.ContentLength = byteArray.Length;
request.Timeout = 3000;
string appkey = "OpenInfo";
//获取ReqVerify
var AppKey = Settings.AppKey;
var AppSecret = Settings.AppSecret;
//获取时间戳
var ReqTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
//var ReqTime = GetTimeStamp(DateTime.Now.AddHours(-8), 1, 2);
LogHelper.Info($"加密前 AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime} ");
LogHelper.Info($"地址:{url},内容:{postData}");
var ReqVerify = GetMd5FromString(AppKey + AppSecret + ReqTime);
LogHelper.Info($"加密后 AppKey={AppKey} AppSecret={AppSecret} ReqTime={ReqTime} ReqVerify={ReqVerify} url={url} req={postData}");
request.Headers.Add("ReqTime", ReqTime.ToString());
request.Headers.Add("ReqVerify", ReqVerify);
request.Headers.Add("AppKey", appkey);
try
{
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
//Console.WriteLine(((HttpWebResponse)response).StatusDescription);
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream, Encoding.UTF8);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
return "";
}
}
public string WebPostycl(string url, string postData, string cotentType = "application/json")
{
Console.WriteLine(url);
WebRequest request = WebRequest.Create(url);
request.Method = "POST";
//string postData = JsonConvert.SerializeObject(data); ;
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = cotentType;
request.ContentLength = byteArray.Length;
request.Timeout = 3000;
//获取时间戳
var time = new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds();
request.Headers.Add("ReqTime", time.ToString());
//获取ReqVerify
var TokenMsg = "OpenInfoOpenInfoSecret" + time;
string regVerify = GetMd5FromString(TokenMsg);
request.Headers.Add("ReqVerify", regVerify);
request.Headers.Add("AppKey", "OpenInfo");
try
{
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
//Console.WriteLine(((HttpWebResponse)response).StatusDescription);
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream, Encoding.UTF8);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
return responseFromServer;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
return "";
}
}
///
/// MD5加密
///
///
///
public static string GetMd5FromString(string sInput)
{
var lstData = Encoding.GetEncoding("utf-8").GetBytes(sInput);
var lstHash = new MD5CryptoServiceProvider().ComputeHash(lstData);
var result = new StringBuilder(32);
for (int i = 0; i < lstHash.Length; i++)
{
result.Append(lstHash[i].ToString("x2").ToUpper());
}
return result.ToString();
}
public string WebGet(string url)
{
//using (var client = new HttpClient()) {
// //请求结果
// string result = client.GetAsync(url).Result.Content.ReadAsStringAsync().Result;
// Console.WriteLine(result);
// return result;
//}
//Console.WriteLine(url);
WebRequest request = WebRequest.Create(url);
request.Timeout = 6000;
request.Method = "GET";
try
{
WebResponse response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
Console.WriteLine(responseFromServer);
return responseFromServer;
}
catch (Exception e)
{
return "";
}
}
public string Get(string url, string contentType = "application/x-www-form-urlencoded")
{
WebRequest request = WebRequest.Create(url);
request.Method = "Get";
request.ContentType = contentType;
StreamReader reader = null;
Stream stream = null;
WebResponse rsp = null;
try
{
rsp = request.GetResponse();
stream = rsp.GetResponseStream();
reader = new StreamReader(stream);
return reader.ReadToEnd();
}
catch
{
return "";
}
finally
{
// 释放资源
if (reader != null) reader.Close();
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
}
}
public string Post(string url, string postData, string contentType = "application/json", string sessionId = "")
{
Console.WriteLine(url);
WebRequest request = WebRequest.Create(url);
request.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = contentType;
request.ContentLength = byteArray.Length;
request.Timeout = 3000;
if (sessionId != "")
{
request.Headers.Set("ASP.NET_SessionId", sessionId);
}
StreamReader reader = null;
Stream stream = null;
WebResponse rsp = null;
try
{
stream = request.GetRequestStream();
stream.Write(byteArray, 0, byteArray.Length);
stream.Close();
rsp = request.GetResponse();
stream = rsp.GetResponseStream();
reader = new StreamReader(stream);
return reader.ReadToEnd();
}
catch (Exception ex)
{
Console.WriteLine($"{url} err={ex.Message}");
return "";
}
finally
{
// 释放资源
if (reader != null) reader.Close();
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
}
}
public string Post(string url, Dictionary dic)
{
var param = dic.Select(a => { return string.Format("{0}={1}", a.Key, a.Value); }).ToList();
return Post(url, string.Join("&", param), "application/x-www-form-urlencoded");
}
public string PostWithCookie(string url, string sessinId)
{
return PostWithCookie(url, "", "", sessinId);
}
public string PostWithCookie(string url, string postData, string contentType = "application/json", string sessionId = "")
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "POST";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = contentType;
request.ContentLength = byteArray.Length;
if (sessionId != "")
{
request.CookieContainer = new CookieContainer();
request.CookieContainer.SetCookies(new Uri("http://" + request.RequestUri.Authority), "ASP.NET_SessionId=" + sessionId);
}
StreamReader reader = null;
Stream stream = null;
WebResponse rsp = null;
try
{
stream = request.GetRequestStream();
stream.Write(byteArray, 0, byteArray.Length);
stream.Close();
rsp = request.GetResponse();
stream = rsp.GetResponseStream();
reader = new StreamReader(stream);
return reader.ReadToEnd();
}
catch
{
return "";
}
finally
{
// 释放资源
if (reader != null) reader.Close();
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
}
}
}
}