2013-02-02 34 views
2

我想知道是否有一個技巧,我失蹤了。從Arduino以太網客戶端刪除標題信息獲取

在你正是如此web服務做一個獲取一個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 

所有perfe很好 - 但我必須在arduino上做一些昂貴的字符串處理來獲得消息正文。我只想要1359825878036.有沒有辦法告訴以太網客戶端不讀取頭文件?那會很方便。

我最好的解決辦法,到目前爲止是假設郵件正文始終是最後一個新行字符之後,這似乎很容易出錯:

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(); 
    } 

謝謝,本 - nimbits.com

回答

2

他們是鍵。標頭終止於雙CRLF:

Response = Status-Line 
    *((general-header   
    | response-header   
    | entity-header) CRLF) 
    CRLF 
    [ message-body ] 

W3 doc

+1

能否請您提供關於如何做到這一點一些示例代碼? –

+0

示例代碼,它不是答案 – YumYumYum