首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代理调用api需要15+seconds

代理调用api需要15+seconds
EN

Stack Overflow用户
提问于 2021-05-20 17:51:17
回答 1查看 30关注 0票数 0

在C#应用程序中,当调用API接口时,往往需要15+秒才能访问。API部署在内网的另一个网段,需要通过proxy访问。有人说是DNS问题,试着设置主机,没有效果。环境: Windows Server 2012 R2,IISv8.5代码脚本:

代码语言:javascript
复制
  private string PostHttp(string url, string authHeader, string requestBody)
        {
            var webRequest = System.Net.WebRequest.Create(url);

            ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult);

            byte[] data = System.Text.Encoding.UTF8.GetBytes(requestBody);
            webRequest.Method = "POST";
            webRequest.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
            webRequest.Headers.Add("Accept-Encoding", "gzip, deflate");
            webRequest.Headers.Add("Authorization", authHeader);
            webRequest.ContentLength = data.Length;
            webRequest.ContentType = "application/x-www-form-urlencoded";


            System.Net.WebProxy proxy = new System.Net.WebProxy("http://myHttpProxyAddress", false);
            proxy.Credentials = new System.Net.NetworkCredential("HttpProxyUser", "HttpProxyPassword");
        
            webRequest.Proxy = proxy;

            var writer = webRequest.GetRequestStream();
            writer.Write(data, 0, data.Length);
            writer.Close();

            using (WebResponse webResponse = webRequest.GetResponse())
            {
                System.IO.StreamReader reader = null;

                if (webResponse.Headers["Content-Encoding"] == "gzip")
                    reader = new System.IO.StreamReader(new GZipStream(webResponse.GetResponseStream(), CompressionMode.Decompress), System.Text.Encoding.UTF8);
                else
                    reader = new System.IO.StreamReader(webResponse.GetResponseStream(), System.Text.Encoding.UTF8);

                var result = reader.ReadToEnd();
                reader.Close();

                return result;
            }
        }
EN

回答 1

Stack Overflow用户

发布于 2021-05-20 18:07:51

很难仅仅通过听到某人说的一个可能性(例如DNS错误)来指出,尝试使用一些http实用程序(例如Curl)来检查和测量它。

你可以用下面的指南包装上面的请求,并测量计时细节。

How do I measure request and response times at once using cURL?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67618011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档