2016-04-26 23 views
0

我正嘗試使用Telit GE910單元模塊通過單元網絡發出HTTP請求。我通過FTDI板將它連接到我的電腦的USB端口,並通過終端發送AT指令。我使用AT命令在命令模式下成功打開套接字併發送HTTP請求。在請求Heroku應用程序w單元格模塊時出現HTTP 505錯誤

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','空間'和'P'之前一直出現;也可能有其他字母,但那些是我見過的。

+0

順便說一下,我可以使用cURL,ESP8266 WiFi模塊上構建的WiFi客戶端以及爲LinkIt ONE IoT開發板構建的TCP客戶端成功向我的Heroku Web服務器發出HTTP請求。 – oregano

回答

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輸入兩次,請求會通過。但即使一個HEAD/HTTP/1.1請求heroku.com回來爲400。但是,這是旁邊:

根據RFC(我發現了here)HTTP 1.1需要一個主機。所以,如果我做的整個事情與正確的行結尾

GET/HTTP/1.1 
Host: heroku.com 

它的工作原理!它也適用於發佈到我的服務器。

相關問題