奇怪的HTTP响应Arduino

时间:2014-01-07 00:45:46

标签: http arduino ethernet

所以,我写了一个程序,而不是假设连接到服务器,它返回时间。它可以在我的服务器上运行,但是当我尝试在另一台服务器上使用它时,它反应奇怪。以下是我服务器的回复:

HTTP/1.1 200 OK
Date: Tue, 07 Jan 2014 00:06:20 GMT
Server: Apache/2.2.22 (Debian)
X-Powered-By: PHP/5.4.4-14+deb7u5
Set-Cookie: PHPSESSID=jlscamqbddtqibf9j7m0fu27p5; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Length: 6
Connection: close
Content-Type: text/html

4:06pm

效果很好。现在这是来自其他服务器的响应(不起作用):

HTTP/1.1 200 OK
Date: Tue, 07 Jan 2014 00:06:34 GMT
Server: Apache
Set-Cookie: PHPSESSID=krlqmoqgpiqm9b9u27agup53c7; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Connection: close
Content-Type: text/html

6
4:06pm
0

正如你所看到的,我在预期的反应之前和之后得到了一些奇怪的东西。服务器上的代码完全相同。除了几个字符串之外,Arduino上的代码是相同的。

以下是我正在使用的代码的pastebin:http://pastebin.com/TFF5h2Gw 对不起,没有很多评论,它有点混乱。我省略了一些其他东西使用的代码,我甚至还没有进行测试,因为我甚至无法得到时间。

1 个答案:

答案 0 :(得分:2)

您所看到的是chunk-encoded response。这是可以的,因为所有支持HTTP / 1.1的客户端都应该理解这种传输编码。什么是奇怪的是服务器没有明确地将响应标记为块编码(这通常通过Transer-Encoding: chunked标头完成)。

摆脱这种情况的一种快速方法是发出HTTP / 1.0请求。