使用sim900发送获取或发布请求时出现HTTP错误代码400

时间:2020-10-11 12:15:37

标签: http iis bad-request sim900


我有一个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面板来管理我的网站,并且无权访问某些服务器设置。

1 个答案:

答案 0 :(得分:0)

该请求将在进入iis之前通过http.sys模块,该命令将拦截不符合规则的请求,因此您的响应来自Microsoft-HTTPAPI / 2.0,其状态码为400。可以修改注册表,但是注册表中的设置基于您的应用程序和请求,并且没有通用的修改方法。

How to troubleshoot HTTP 400 errors

Http.sys registry settings for Windows

另一种方法是建议您使用类似于 Fiddler 的工具来捕获sim900发送的请求和邮递员发送的请求。捕获之后,请对它们进行详细比较以找出差异,然后将sim900请求修改为与邮递员请求相同,并符合http .sys规则。

相关问题