【问题标题】:Is there a limit on the size of a http argument value in a HttpWebRequest?HttpWebRequest 中的 http 参数值的大小是否有限制?
【发布时间】:2011-07-30 06:48:09
【问题描述】:

我正在测试几个不同的公共 RESTful API,每个 API 的 http 参数值名称都不同,但在概念上都类似。然而,没有一家公司是有联系的,所以这一定是我的事。

在 .NET 中尝试获取 HttpWebResponse 时出现以下错误:

消息:“服务器违反了协议。Section=ResponseStatusLine”
状态:ServerProtocolViolation {11}

使用 Fiddler,我发现返回的标题不存在,这是问题的原因(甚至不存在且格式不正确):

HTTP/1.0 200 这个有问题的服务器没有返回标头

我发送的参数是一篇冗长的文本新闻文章。我已经删除了 ALL 标点符号、字符等 只是 以确保没有任何干扰。我使用 StringBuilder 构建文本,然后创建如下 URI:

Dim sb As New StringBuilder
sb.Append("&apiKey=" + HttpUtility.UrlEncode("123456789"))
sb.Append("&inputText=" + HttpUtility.UrlEncode(Me.MyTestText))
Dim ApiHttpWebRequest As HttpWebRequest = CType(WebRequest.Create(New Uri(BaseRequestURL + sb.ToString.Trim())), HttpWebRequest)
Dim ApiHttpWebResponse As HttpWebResponse = CType(ApiHttpWebRequest.GetResponse(), HttpWebResponse)

此代码确实适用于我发送的大多数文本。我发现有趣的是,如果我缩短发送的文本,它就会起作用!我无法确切地弄清楚阈值或断点。 stringbuilders 值在针对它运行 HttpUtility.UrlEncode 函数后扩展。然而,文本大小只有大约 5-8 KB,远低于 MSDN 中规定的“httpWebRequest”.config 设置所规定的任何大小限制。我正在使用的 API(例如 1 个限制是 150 KB 的文本)。我什至尝试在 web.config 中将所有这些值设置为“-1”,这意味着:“-1 值表示不会对响应标头施加大小限制。” p>

http 参数值的大小是否有限制,或者我在这里遗漏的任何其他内容会导致这种情况?谢谢!

【问题讨论】:

    标签: .net asp.net httpwebrequest


    【解决方案1】:
    【解决方案2】:

    通常,当我发布问题时,问题会感到害怕,并提出解决方案;)

    感谢您提供上一个链接,但由于我没有直接在浏览器中执行此操作,因此这些限制不是我的问题。

    我使用的是 HttpWebRequest 的默认“方法”值,即“GET”,出于几个原因,我应该使用“POST”,包括克服请求问题的长度。因此,创建 Request 对象后添加以下代码行,解决了这个问题:

    ApiHttpWebRequest.Method = "POST"
    

    此链接(旧但内容仍然有效)也很有帮助:

    QueryString / GET / URL参数有什么限制?:
    http://classicasp.aspfaq.com/forms/what-is-the-limit-on-querystring/get/url-parameters.html

    ...以及来自 TechNet 的良好描述:

    "前面示例中使用的 GET 方法将名称/值对附加到 URL。不幸的是,URL 的长度是有限的,因此该方法仅适用于只有几个参数的情况. 如果表单使用大量参数,或者参数包含大量数据,则 URL 可能会被截断。此外,在 URL 上传递的参数在浏览器的地址字段中可见,而不是输入密码的最佳位置显示。

    GET 方法的替代方法是 POST 方法。此方法将名称/值对打包在 HTTP 请求的正文中,这使得 URL 更清晰,并且对表单输出没有大小限制。它也更安全。”

    【讨论】:

      猜你喜欢
      • 2016-11-15
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      • 2018-06-24
      • 2011-12-19
      相关资源
      最近更新 更多