【发布时间】: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