• 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

    参考

  • 相关阅读:
    ES head安装笔记, 还没有试
    sed用法笔记
    Kibana笔记
    ElasticSearch笔记
    Mongo聚合笔记
    java 判断是否为数字
    Redis 一:安装篇
    make问题:make[1] entering directory
    Java 多线程 简单实例 (消费者与生成者)的关系
    Java 多线程 简单实例 (Runnable)
  • 原文地址:https://www.cnblogs.com/hofmann/p/10805485.html
Copyright © 2020-2023  润新知