【问题标题】:Http error code 400 when using sim900 to send get or post requests使用 sim900 发送 get 或 post 请求时 Http 错误代码 400
【发布时间】:2020-10-11 12:15:37
【问题描述】:

我有一个 SIM900 GSM 模块,用于向服务器发送 GET 和 POST 请求。
最近我为此租了一个主机。我使用 asp.net webforms 编写了一个简单的页面来解析来自 GSM 模块的传入数据,一切正常,直到几天前我注意到我不再可以从我的 gsm 模块接收数据。
在进一步调查后,我发现我租用的主机不断向我的 GSM 模块返回 HTTP 400 错误。这些响应不是来自 IIS,而是来自 Microsoft-HTTPAPI/2.0。请求头是这样的:
GET /test/data?meow HTTP/1.1
Host : www.whatever.com
Connection : keep-alive

这是服务器响应(正文省略):

HTTP/1.1 400 Bad Request
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Sun, 11 Oct 2020 12:08:28 GMT
Connection: close
Content-Length: 339

我使用 Postman(应用程序)模拟相同的请求,一切正常。
我还制作了 chrome 请求标头的精确副本并将其提供给模块,但这也不起作用。
注意:我没有使用 sim900 的 HTTP 命令,而是连接到某个端口(在本例中为 80)并手动发出获取请求。
注意 2:我获得了一个 Plesk 面板来管理我的网站,但无权访问某些服务器设置。

【问题讨论】:

  • 您是否尝试省略标题名称和逗号之间的空格?那些不应该在那里
  • @Expolarity 是的。它什么也没做。
  • 您是否尝试查看this?这似乎与您的问题类似

标签: http iis bad-request sim900


【解决方案1】:

请求在进入iis之前会经过http.sys模块,会拦截不符合规则的请求,所以你的响应来自Microsoft-HTTPAPI/2.0,状态码为400。解决这个问题可以修改注册表,但是注册表中的设置是根据你的应用和请求来的,没有通用的修改方法。

How to troubleshoot HTTP 400 errors

Http.sys registry settings for Windows

另一种方法是建议你使用类似Fiddler的工具,分别捕获sim900发送的请求和postman发送的请求。抓包后详细对比,找出差异,修改sim900请求和postman请求一样,符合http .sys规则。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2013-12-11
    • 1970-01-01
    相关资源
    最近更新 更多