Example #1
0
        /// <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);
        }
Example #2
0
        /// <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);
        }
Example #3
0
        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);
        }
Example #4
0
        /// <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);
        }
Example #5
0
        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);
        }
Example #6
0
        /// <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);
        }