/// <summary> /// 发送HTTP的GET请求 /// </summary> /// <param name="Url">HTTP地址</param> /// <param name="postDataStr">参数</param> /// <returns></returns> public static string HttpGet(string Url, string postDataStr) { var requestBeginTime = DateTime.Now; var retString = ""; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url + (postDataStr == "" ? "" : "?") + postDataStr); request.Method = "GET"; request.ContentType = "text/html;charset=UTF-8"; HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); } catch (Exception ex) { LogHelper.WriteError(ex); } finally { TrackApiLog.WriteLog("KMPay", Url, "GET", postDataStr, requestBeginTime, retString); } return(retString); }
/// <summary> /// 获取远程服务器ATN结果 /// </summary> /// <param name="strUrl">指定URL路径地址</param> /// <param name="timeout">超时时间设置</param> /// <returns>服务器ATN结果</returns> private string Get_Http(string strUrl, int timeout) { string strResult = ""; var requestBeginTime = DateTime.Now; try { HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(strUrl); myReq.Timeout = timeout; HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse(); Stream myStream = HttpWResp.GetResponseStream(); StreamReader sr = new StreamReader(myStream, Encoding.Default); StringBuilder strBuilder = new StringBuilder(); while (-1 != sr.Peek()) { strBuilder.Append(sr.ReadLine()); } strResult = strBuilder.ToString(); } catch (Exception exp) { strResult = "错误:" + exp.Message; } finally { TrackApiLog.WriteLog("AliPay", strUrl, "GET", "", requestBeginTime, strResult); } return(strResult); }
public static string AjaxRequest(SortedDictionary <string, string> sParaTemp, XuHos.Common.Config.Sections.Pay.AliPay Config) { Dictionary <string, string> dicPara = new Dictionary <string, string>(); dicPara = BuildRequestPara(sParaTemp, Config); System.Collections.Specialized.NameValueCollection values = new System.Collections.Specialized.NameValueCollection(); StringBuilder data = new StringBuilder(); foreach (KeyValuePair <string, string> temp in dicPara) { if (data.Length > 0) { data.Append("&"); } data.AppendFormat("{0}={1}", temp.Key, temp.Value); values.Add(temp.Key, temp.Value); } var requestUrl = define.GATEWAY_NEW + data.ToString(); var requestBeginTime = DateTime.Now; var response = ""; try { System.Net.WebClient client = new System.Net.WebClient(); client.Encoding = System.Text.Encoding.UTF8; response = client.DownloadString(requestUrl); } catch (Exception ex) { LogHelper.WriteError(ex); } finally { TrackApiLog.WriteLog("AliPay", requestUrl, "GET", data.ToString(), requestBeginTime, response); } return(response); }
/// <summary> /// 发送HTTP的POST请求 /// </summary> /// <param name="Url">HTTP地址</param> /// <param name="postDataStr">参数</param> /// <returns></returns> public static string HttpPost(string Url, string postDataStr) { string retString = ""; var requestBeginTime = DateTime.Now; try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.ContentLength = Encoding.UTF8.GetByteCount(postDataStr); //request.CookieContainer = cookie; Stream myRequestStream = request.GetRequestStream(); StreamWriter myStreamWriter = new StreamWriter(myRequestStream, Encoding.GetEncoding("gb2312")); myStreamWriter.Write(postDataStr); myStreamWriter.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); //response.Cookies = cookie.GetCookies(response.ResponseUri); Stream myResponseStream = response.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8")); retString = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); } catch (Exception ex) { LogHelper.WriteError(ex); } finally { TrackApiLog.WriteLog("KMPay", Url, "POST", postDataStr, requestBeginTime, retString); } return(retString); }
public static string Post(string xml, string url, bool isUseCert, int timeout, string appId) { var WxPayConfig = Configuration.GetAppPayConfig <XuHos.Common.Config.Sections.Pay.WXPay>(appId); //=======【证书路径设置】===================================== /* 证书路径,注意应该填写绝对路径(仅退款、撤销订单时需要) */ string SSLCERT_PATH = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "App_Data/cert/wxpay/" + WxPayConfig.APPID + ".p12"); string SSLCERT_PASSWORD = WxPayConfig.MCHID; System.GC.Collect(); //垃圾回收,回收没有正常关闭的http连接 string result = ""; //返回结果 HttpWebRequest request = null; HttpWebResponse response = null; Stream reqStream = null; var requestBeginTime = DateTime.Now; try { //设置最大连接数 ServicePointManager.DefaultConnectionLimit = 200; //设置https验证方式 if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); } /*************************************************************** * 下面设置HttpWebRequest的相关属性 * ************************************************************/ request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.Timeout = timeout * 1000; //设置代理服务器 //WebProxy proxy = new WebProxy(); //定义一个网关对象 //proxy.Address = new Uri(WxPayConfig.PROXY_URL); //网关服务器端口:端口 //request.Proxy = proxy; //设置POST的数据类型和长度 request.ContentType = "text/xml"; byte[] data = System.Text.Encoding.UTF8.GetBytes(xml); request.ContentLength = data.Length; //是否使用证书 if (isUseCert) { if (!File.Exists(SSLCERT_PATH)) { LogHelper.WriteWarn($"文件{SSLCERT_PATH}不存在"); } //X509Certificate2 cert = new X509Certificate2(path + WxPayConfig.SSLCERT_PATH, WxPayConfig.SSLCERT_PASSWORD); //发布到服务器时出现证书异常 X509Certificate2 cert = new X509Certificate2(SSLCERT_PATH, SSLCERT_PASSWORD, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet); request.ClientCertificates.Add(cert); Log.Debug("WxPayApi", "PostXml used cert"); } //往服务器写入数据 reqStream = request.GetRequestStream(); reqStream.Write(data, 0, data.Length); reqStream.Close(); //获取服务端返回 response = (HttpWebResponse)request.GetResponse(); //获取服务端返回数据 StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8); result = sr.ReadToEnd().Trim(); sr.Close(); } catch (System.Threading.ThreadAbortException e) { Log.Error("HttpService", "Thread - caught ThreadAbortException - resetting."); Log.Error("Exception message: {0}", e.Message); System.Threading.Thread.ResetAbort(); } catch (WebException e) { Log.Error("HttpService", e.ToString()); if (e.Status == WebExceptionStatus.ProtocolError) { Log.Error("HttpService", "StatusCode : " + ((HttpWebResponse)e.Response).StatusCode); Log.Error("HttpService", "StatusDescription : " + ((HttpWebResponse)e.Response).StatusDescription); } throw new WxPayException(e.ToString()); } catch (Exception e) { Log.Error("HttpService", e.ToString()); throw new WxPayException(e.ToString()); } finally { TrackApiLog.WriteLog("WXPay", url, "POST", xml, requestBeginTime, result); //关闭连接和流 if (response != null) { response.Close(); } if (request != null) { request.Abort(); } } return(result); }
/// <summary> /// 处理http GET请求,返回数据 /// </summary> /// <param name="url">请求的url地址</param> /// <returns>http GET成功后返回的数据,失败抛WebException异常</returns> public static string Get(string url) { System.GC.Collect(); string result = ""; HttpWebRequest request = null; HttpWebResponse response = null; var requestBeginTime = DateTime.Now; //请求url以获取数据 try { //设置最大连接数 ServicePointManager.DefaultConnectionLimit = 200; //设置https验证方式 if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) { ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); } /*************************************************************** * 下面设置HttpWebRequest的相关属性 * ************************************************************/ request = (HttpWebRequest)WebRequest.Create(url); request.Method = "GET"; //设置代理 //WebProxy proxy = new WebProxy(); //proxy.Address = new Uri(WxPayConfig.PROXY_URL); //request.Proxy = proxy; //获取服务器返回 response = (HttpWebResponse)request.GetResponse(); //获取HTTP返回数据 StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8); result = sr.ReadToEnd().Trim(); sr.Close(); } catch (System.Threading.ThreadAbortException e) { Log.Error("HttpService", "Thread - caught ThreadAbortException - resetting."); Log.Error("Exception message: {0}", e.Message); System.Threading.Thread.ResetAbort(); } catch (WebException e) { Log.Error("HttpService", e.ToString()); if (e.Status == WebExceptionStatus.ProtocolError) { Log.Error("HttpService", "StatusCode : " + ((HttpWebResponse)e.Response).StatusCode); Log.Error("HttpService", "StatusDescription : " + ((HttpWebResponse)e.Response).StatusDescription); } throw new WxPayException(e.ToString()); } catch (Exception e) { Log.Error("HttpService", e.ToString()); throw new WxPayException(e.ToString()); } finally { TrackApiLog.WriteLog("WXPay", url, "GET", "", requestBeginTime, result); //关闭连接和流 if (response != null) { response.Close(); } if (request != null) { request.Abort(); } } return(result); }