【问题标题】:HttpWebRequest maximum length for Get request url获取请求 url 的 HttpWebRequest 最大长度
【发布时间】:2017-05-24 07:12:35
【问题描述】:

我的任务是构建一项服务,将信息从第三方 API 提取到我们的内部数据仓库。他们有一个获取请求,可以在您通过查询字符串指定所需参数的地方提取我想要的数据。例如

http://www.api.com?parameter=firstname&parameter=surname

在我的代码中,URL 的长度超过 3600 个字符,只要要求 116 个参数。

我的网络请求是使用以下代码生成的:

    private HttpWebRequest GetWebRequest(string url, string type, int timeout)
    {
        var httpWebRequest = (HttpWebRequest) WebRequest.Create(_baseUrl + url);
        httpWebRequest.Method = type;
        httpWebRequest.Timeout = timeout;            
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Headers.Add("Authorization", "Bearer " + _token.access_token);
        httpWebRequest.ContentLength = 0;

        return httpWebRequest;
    }

当我运行代码时,我返回了一个带有消息“无法连接到远程服务器”的 Web 异常,以及一个内部异常消息“无法建立连接,因为目标机器主动拒绝了它的 IP 地址”

我没有在这篇文章中包含整个 URL,因为我发现如果我将 URL 复制并粘贴到 Postman 并运行请求,我会得到我期望的响应,因此我知道 URL 的格式正确。我还发现,如果我将 url 的长度减少到大约 2100 个字符,那么请求就会起作用。

我一直在搜索,但没有找到任何明确的文档表明 URL 的长度有限制,但我无法解释为什么整个 url 在 Postman 中有效,但在 ac# web 请求中无效,如果我削减了 URL 的长度,然后它在 Web 请求中起作用!

如果有人对此有任何想法,我会很高兴。

【问题讨论】:

    标签: c# rest get webrequest


    【解决方案1】:

    old post 建议根据服务器和客户端,最大请求长度介于 2 到 4 到 8 KB 之间,这与您的观察结果一致。

    Postman 是“另一个”客户端,因此它很可能在那里工作,而它不在您的程序中。底线是:你不应该GET 这么长的请求。你应该POST他们。如果您可以控制该服务,则可以更改它,使其也支持POST,如果尚未(已记录或未记录)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 2017-03-07
      相关资源
      最近更新 更多