【问题标题】:HttpClient, server committed a protocol violation Section=ResponseHeader Detail=CR must be followed by LFHttpClient,服务器违反协议 Section=ResponseHeader Detail=CR 后面必须跟LF
【发布时间】:2013-09-02 20:00:54
【问题描述】:

我正在使用 HttpClient 通过 WiFi 与 GoPro 摄像机通信,但出现以下错误。 “服务器违反了协议。Section=ResponseHeader Detail=CR 必须后跟 LF” 虽然我已通知他们,但我无法更改 GoPro 的网络服务器,因此我需要在客户端。当我拨打这个电话时,使用 Fiddler 作为代理,Fiddler 纠正了这个问题,我的应用程序按预期运行。但如果没有提琴手,我会收到协议违规消息。

根据我所做的搜索,可以通过添加<httpWebRequest useUnsafeHeaderParsing = "true"/>(参见HttpWebRequestElement.UseUnsafeHeaderParsing Property)来解决此问题,但这是一个Windows 8 商店应用程序,没有配置文件。

一种选择是编写一个自定义处理程序并将其注入 HttpClient ctor,但我不确定从哪里开始使用我自己的自定义处理程序,这对于应该内置的东西来说似乎是一项巨大的努力。

有简单的解决办法吗?

【问题讨论】:

  • 我在使用 Mashape API 的 Windows Phone 应用程序中遇到了类似的问题(它在 6 月底发生了变化)。很遗憾,微软拒绝让 Phone/Store 应用更宽松一点。

标签: c# windows-store-apps


【解决方案1】:

【讨论】:

  • 已经看过该选项,但这是一个 Windows 商店应用程序,并且 System.Net.Configuration 不存在 :-(
【解决方案2】:

不幸的是,编写自己的处理程序也不起作用,因为在返回响应时,系统的HttpClientHandler 在您的自定义处理程序之前被调用。

对于 Windows 应用商店应用,您可以使用 MessageWebSocket:我尝试使用 StreamSocket 对 Windows Phone 8.1 Silverlight 进行类似的操作;见How can I accept "unsafe" HTTP response headers in a Windows Phone/Store app?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2013-01-29
    • 2011-01-29
    相关资源
    最近更新 更多