在向单元模块请求Heroku应用程序时出现HTTP 505错误

时间:2016-04-26 21:00:05

标签: http heroku at-command iot modem

我尝试使用Telit GE910单元模块通过单元网络发出HTTP请求。我已通过FTDI板将其连接到我的计算机的USB端口,并通过终端发送AT命令。我使用AT命令在命令模式下成功打开套接字并发送HTTP请求。

AT#SD=1,0,80,"google.com",0,0,1
OK
�AT#SSEND=1
> HE�AD� /� HTT�P/1.1


OK

SRING: 1

我不明白为什么会出现这些问题。在向google.com发出请求时,这很好,但是在Heroku上托管的任何内容都会给我一个505错误。

HTTP/1.1 505 HTTP Version Not Supported
Connection: close
Server: Cowboy
Date: Tue, 26 Apr 2016 20:39:34 GMT
Content-Length: 0

我已在一两个论坛中读到此505响应特定于Heroku,并且与HTTP请求中的错误间距有关。我怀疑无法识别的角色正在创造问题。到底是怎么回事?他们一直出现在A' A'' space'' P&#39 ;;可能还有其他字母,但那些是我见过的。

1 个答案:

答案 0 :(得分:2)

好的,我已经想出(我认为)为什么我得到了505回复。然后我开始得到400,但我也想出来了!

在Nimbelink(使用Telit单元模块的供应商 - 我们有一个模块上有Telit GE910)的套接字拨号应用说明中,它表示输入HTTP请求后(例如GET / HTTP/1.1)您打算两次点击 ctrl + j 以表示请求结束。

好吧,我开始在CoolTerm中进行所有串行通信,以便能够看到我发送的HEX。 (我希望我能抓住�角色 - 我没有,事实上他们不会在CoolTerm中出现。) ctrl + j 会产生一个换行符( HEX:0A)。根据HTTP文档,要发出行结束信号,您打算使用回车换行符(HEX:0D 0A)。 (Heroku also says it has to be formatted like this.)这是我点击输入时发送的内容。因此,如果我使用输入两次结束GET / HTTP/1.1,请求即可。虽然对heroku.com的HEAD / HTTP/1.1请求即可以400回复。但接下来就是这样:

根据RFC(我发现here),HTTP 1.1需要一个主机。所以如果我用正确的行结尾做整件事

GET / HTTP/1.1
Host: heroku.com 

它有效!它也适用于发布到我的服务器。