123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 |
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Text;
- using System.Threading.Tasks;
- using System.Xml;
- namespace Ant.Common
- {
- public class WebApiHelper
- {
- /// <summary>
- /// 用户需要登录才能Post请求接口
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="url"></param>
- /// <param name="data"></param>
- /// <param name="staffId"></param>
- /// <returns></returns>
- public static T PostAuthorized<T>(string url, string data, string token)
- {
- byte[] bytes = Encoding.UTF8.GetBytes(data);
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
- //写数据
- request.Method = "POST";
- request.ContentLength = bytes.Length;
- request.ContentType = "application/json";
- Stream reqstream = request.GetRequestStream();
- reqstream.Write(bytes, 0, bytes.Length);
- //读数据
- request.Timeout = 300000;
- request.Headers.Set("Pragma", "no-cache");
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- Stream streamReceive = response.GetResponseStream();
- StreamReader streamReader = new StreamReader(streamReceive, Encoding.UTF8);
- string strResult = streamReader.ReadToEnd();
- //关闭流
- reqstream.Close();
- streamReader.Close();
- streamReceive.Close();
- request.Abort();
- response.Close();
- return JsonConvert.DeserializeObject<T>(strResult);
- }
- /// <summary>
- /// 不需要授权的接口
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="url"></param>
- /// <param name="data"></param>
- /// <param name="staffId"></param>
- /// <returns></returns>
- public static T Post<T>(string url, string data)
- {
- byte[] bytes = Encoding.UTF8.GetBytes(data);
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
- //写数据
- request.Method = "POST";
- request.ContentLength = bytes.Length;
- request.ContentType = "application/json";
- Stream reqstream = request.GetRequestStream();
- reqstream.Write(bytes, 0, bytes.Length);
- //读数据
- request.Timeout = 300000;
- request.Headers.Set("Pragma", "no-cache");
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- Stream streamReceive = response.GetResponseStream();
- StreamReader streamReader = new StreamReader(streamReceive, Encoding.UTF8);
- string strResult = streamReader.ReadToEnd();
- //关闭流
- reqstream.Close();
- streamReader.Close();
- streamReceive.Close();
- request.Abort();
- response.Close();
- return JsonConvert.DeserializeObject<T>(strResult);
- }
- /// <summary>
- /// 用户需要登录Get请求
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="webApi"></param>
- /// <param name="queryStr"></param>
- /// <param name="staffId"></param>
- /// <returns></returns>
- public static T GetMap<T>(string webApi)
- {
- try
- {
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(webApi);
- request.Method = "GET";
- //request.ContentType = "application/json";
- request.Timeout = 90000;
- request.Headers.Set("Pragma", "no-cache");
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- Stream streamReceive = response.GetResponseStream();
- StreamReader streamReader = new StreamReader(streamReceive, Encoding.UTF8);
- string strResult = streamReader.ReadToEnd();
- streamReader.Close();
- streamReceive.Close();
- request.Abort();
- response.Close();
- return JsonConvert.DeserializeObject<T>(strResult);
- }
- catch (Exception ex)
- {
- }
- return default(T);
- }
- /// <summary>
- /// 用户需要登录Get请求
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="webApi"></param>
- /// <param name="queryStr"></param>
- /// <param name="staffId"></param>
- /// <returns></returns>
- public static T Get<T>(string webApi, string query, string queryStr)
- {
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(webApi + "?" + queryStr);
- request.Method = "GET";
- request.ContentType = "application/json";
- request.Timeout = 90000;
- request.Headers.Set("Pragma", "no-cache");
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- Stream streamReceive = response.GetResponseStream();
- StreamReader streamReader = new StreamReader(streamReceive, Encoding.UTF8);
- string strResult = streamReader.ReadToEnd();
- streamReader.Close();
- streamReceive.Close();
- request.Abort();
- response.Close();
- return JsonConvert.DeserializeObject<T>(strResult);
- }
- /// <summary>
- /// 用户需要登录Get请求
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="webApi"></param>
- /// <param name="queryStr"></param>
- /// <param name="staffId"></param>
- /// <returns></returns>
- public static DataTable Get(string webApi, string query, string queryStr)
- {
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(webApi + "?" + queryStr);
- request.Method = "GET";
- request.ContentType = "application/x-www-form-urlencoded";
- request.Timeout = 90000;
- request.Headers.Set("Pragma", "no-cache");
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- XmlDocument doc = new XmlDocument();
- doc = ReadXmlResponse(request.GetResponse());//读取服务端返回的结果
- var dt = ConvertXMLToDataSet(doc.InnerXml);
- return dt.Tables[0];
- //Stream streamReceive = response.GetResponseStream();
- //StreamReader streamReader = new StreamReader(streamReceive, Encoding.UTF8);
- //string strResult = streamReader.ReadToEnd();
- //streamReader.Close();
- //streamReceive.Close();
- //request.Abort();
- //response.Close();
- //return strResult;
- }
- /// <summary>
- /// 用户需要登录Get请求
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="webApi"></param>
- /// <param name="queryStr"></param>
- /// <param name="staffId"></param>
- /// <returns></returns>
- public static DataTable Get(string webApi, string query, string queryStr, int timeout)
- {
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(webApi + "?" + queryStr);
- request.Method = "GET";
- request.ContentType = "application/x-www-form-urlencoded";
- request.Timeout = timeout;
- request.Headers.Set("Pragma", "no-cache");
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- XmlDocument doc = new XmlDocument();
- doc = ReadXmlResponse(request.GetResponse());//读取服务端返回的结果
- var dt = ConvertXMLToDataSet(doc.InnerXml);
- return dt.Tables[0];
- }
- /// <summary>
- /// 获取XML转DataTable
- /// </summary>
- /// <param name="xmlData"></param>
- /// <returns></returns>
- private static DataSet ConvertXMLToDataSet(string xmlData)
- {
- StringReader stream = null;
- XmlTextReader reader = null;
- try
- {
- DataSet xmlDS = new DataSet();
- stream = new StringReader(xmlData);
- reader = new XmlTextReader(stream);
- xmlDS.ReadXml(reader);
- return xmlDS;
- }
- catch (Exception ex)
- {
- string strTest = ex.Message;
- return null;
- }
- finally
- {
- if (reader != null)
- reader.Close();
- }
- }
- /// <summary>
- /// 读取服务端返回的结果
- /// </summary>
- private static XmlDocument ReadXmlResponse(WebResponse response)
- {
- StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
- String retXml = sr.ReadToEnd();
- sr.Close();
- XmlDocument doc = new XmlDocument();
- doc.LoadXml(retXml);
- return doc;
- }
- /// <summary>
- /// 拼接get参数
- /// </summary>
- /// <param name="parames"></param>
- /// <returns></returns>
- public static Tuple<string, string> GetQueryString(Dictionary<string, string> parames)
- {
- // 第一步:把字典按Key的字母顺序排序
- IDictionary<string, string> sortedParams = new SortedDictionary<string, string>(parames);
- IEnumerator<KeyValuePair<string, string>> dem = sortedParams.GetEnumerator();
- // 第二步:把所有参数名和参数值串在一起
- StringBuilder query = new StringBuilder(""); //签名字符串
- StringBuilder queryStr = new StringBuilder(""); //url参数
- if (parames == null || parames.Count == 0)
- return new Tuple<string, string>("", "");
- while (dem.MoveNext())
- {
- string key = dem.Current.Key;
- string value = dem.Current.Value;
- if (!string.IsNullOrEmpty(key))
- {
- query.Append(key).Append(value);
- queryStr.Append("&").Append(key).Append("=").Append(value);
- }
- }
- return new Tuple<string, string>(query.ToString(), queryStr.ToString().Substring(1, queryStr.Length - 1));
- }
- /// <summary>
- /// 用户需要登录Get请求
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="webApi">API接口</param>
- /// <param name="query">请求接口需要加密的数据</param>
- /// <param name="queryStr">请求接口传递的参数</param>
- /// <param name="token">凭证</param>
- /// <param name="sign">是否需要参数签名</param>
- /// <returns></returns>
- public static T GetAuthorized<T>(string webApi, string query, string queryStr, string token, bool sign = true)
- {
- HttpWebRequest request = (HttpWebRequest)WebRequest.Create(webApi + "?" + queryStr);
- request.Method = "GET";
- request.ContentType = "application/json";
- request.Timeout = 90000;
- request.Headers.Set("Pragma", "no-cache");
- HttpWebResponse response = (HttpWebResponse)request.GetResponse();
- Stream streamReceive = response.GetResponseStream();
- StreamReader streamReader = new StreamReader(streamReceive, Encoding.UTF8);
- string strResult = streamReader.ReadToEnd();
- streamReader.Close();
- streamReceive.Close();
- request.Abort();
- response.Close();
- return JsonConvert.DeserializeObject<T>(strResult);
- }
- }
- }
|