• C# HttpWebRequest请求远程地址获取返回消息


    HttpWebRequest请求远程地址获取返回消息

            /// <summary>
            /// 请求远程Api获取响应返回字符串
            /// </summary>
            /// <param name="apiUrl">Api地址</param>
            /// <param name="parameters">传递参数键值对</param>
            /// <param name="contentType">内容类型默认application/x-www-form-urlencoded</param>
            /// <param name="methord">请求方式默认POST</param>
            /// <param name="timeout">超时时间默认300000</param>
            /// <returns>响应字符串</returns>
            static public object GetHttpWebResponseReturnString(string apiUrl, Dictionary<string, object> parameters, string contentType = "application/x-www-form-urlencoded", string methord = "POST", int timeout = 300000)
            {
                string result = string.Empty;
                string responseText = string.Empty;
                try
                {
                    if (string.IsNullOrEmpty(apiUrl))
                    {
                        return DNTRequest.GetResultJson(false, "请求apiURl为空", null);
                    }
    
                    StringBuilder postData = new StringBuilder();
                    if (parameters != null && parameters.Count > 0)
                    {
                        foreach (var p in parameters)
                        {
                            if (postData.Length == 0)
                            {
                                postData.AppendFormat("{0}={1}", p.Key, p.Value);
                            }
                            else
                            {
                                postData.AppendFormat("&{0}={1}", p.Key, p.Value);
                            }
                        }
                    }
    
                    ServicePointManager.DefaultConnectionLimit = int.MaxValue;
    
                    HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(apiUrl);
                    myRequest.Proxy = null;
                    myRequest.Timeout = timeout;
                    myRequest.ServicePoint.MaxIdleTime = 1000;
                    if (!string.IsNullOrEmpty(contentType))
                    {
                        myRequest.ContentType = contentType;
                    }
                    myRequest.ServicePoint.Expect100Continue = false;
                    myRequest.Method = methord;
                    byte[] postByte = Encoding.UTF8.GetBytes(postData.ToString());
                    myRequest.ContentLength = postData.Length;
    
                    using (Stream writer = myRequest.GetRequestStream())
                    {
                        writer.Write(postByte, 0, postData.Length);
                    }
    
                    using (HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse())
                    {
                        using (StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8))
                        {
                            responseText = reader.ReadToEnd();
                        }
                    }
                    if (!string.IsNullOrEmpty(responseText))
                    {
                        result = responseText;
                    }
                    else
                    {
                        result = "远程服务无响应,请稍后再试";
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex.Message);
                    result = "请求异常,请稍后再试";
                }
                return result;
            }
    View Code

    参考

  • 相关阅读:
    eclipse里打包时排除.svn目录
    UltraEdit搭建python IDE环境+设置快捷键
    Window下 VC2008 Express 配置 OpenGL
    N73 getRGB createRGBImage 透明色的问题
    Iphone UIApplication openURL能帮助你运行Maps,SMS,Browser, Calling甚至其他的应用程序
    Eclipse配置KEmulator
    洛谷P1439 【模板】最长公共子序列 (DP,离散化)
    Codeforces Round #642 (Div. 3) D. Constructing the Array (优先队列)
    Codeforces #6241 div2 C. Orac and LCM (数学)
    洛谷P1469 找筷子 (位运算)
  • 原文地址:https://www.cnblogs.com/hofmann/p/10805485.html
Copyright © 2020-2023  润新知