我想知道是否有一个技巧,我失踪了。
在arduino上,你可以从网络服务中获取:
if (client.connect("google.com", 80)) {
client.println("GET /service/v2/time HTTP/1.1");
client.println("Host:nimbits-02.appspot.com");
client.println();
delay(1000);
while(client.connected() && !client.available()) delay(1);
while (client.available()) {
c = client.read();
Serial.print(c);
}
client.stop();
client.flush();
}
完美地工作(调用nimbits时间服务)
此调用的内容正文是我所需要的,打印结果如上所示:
> HTTP/1.1 200 OK Date: Sat, 02 Feb 2013 17:24:38 GMT Content-Type:
> text/html Server: Google Frontend Content-Length: 13
>
> 1359825878036
一切都非常好 - 但是我必须在arduino上做一些昂贵的字符串处理来获取消息体。我只想要1359825878036.有没有办法告诉以太网客户端不读标题?那会很方便。
到目前为止,我最好的解决方案是假设消息体总是在最后一个新行char之后,这似乎容易出错:if (client.connect("google.com", 80)) {
client.println("GET /service/v2/time HTTP/1.1");
client.println("Host:nimbits-02.appspot.com");
client.println();
delay(1000);
while(client.connected() && !client.available()) delay(1);
while (client.available()) {
c = client.read();
response= response + c;
}
int contentBodyIndex = response.lastIndexOf('\n');
if (contentBodyIndex > 0) {
Serial.print(response.substring(contentBodyIndex));
}
client.stop();
client.flush();
}
谢谢,Ben - nimbits.com
答案 0 :(得分:2)
他们是关键。标题以双CRLF结尾:
Response = Status-Line
*(( general-header
| response-header
| entity-header ) CRLF)
CRLF
[ message-body ]
请参阅W3 doc