我如何从HTTP响应中获取正文?

问题描述:

嘿,我正在做的和Arduino的项目,我想从一个HTTP请求得到了身体,这里是代码:我如何从HTTP响应中获取正文?

// This will send the request to the server 
client.print(String("GET ") + url + " HTTP/1.1\r\n" + 
      "Host: " + host + "\r\n" + 
      "Connection: close\r\n\r\n"); 
delay(100); 
int liniea_info = 0; 
while(client.available()){ 
    String line = client.readStringUntil('\r'); 
    if(liniea_info == 13){Serial.print(line);} 
    Serial.print(liniea_info); 
    ++liniea_info; 
} 

这工作不错,不整liniea_info返回我:

Requesting URL: /output/***.csv?colors=11 
HTTP/1.1 200 OK 
Access-Control-Allow-Origin: * 
Access-Control-Allow-Headers: X-Requested-With 
Content-Type: text/plain 
Transfer-Encoding: chunked 
Date: Sat, 17 Jun 2017 08:09:31 GMT 
Connection: close 
Set-Cookie: SERVERID=; Expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/ 
Cache-control: private 

34 
colors,day,timestamp 
11,12,2017-06-17T07:48:10.619Z 

0 

我以为用int liniea_info我只会得到我想要的那一行,即线条"11,12,2017-06-17T07:48:10.619Z",但是不行,只打印第一行。

任何人都看到我在做什么错误或如何做到这一点?

+2

这不是C,请取下标签或正确的.... –

+0

HTTPS替换它:// EN。 wikipedia.org/wiki/Chunked_transfer_encoding –

不要重新发明*。只需使用HTTPClient库。这个库处理请求和响应。

添加到包括:

#include <ESP8266HTTPClient.h> 

而干脆:

HTTPClient http; 
http.begin("http://www.sample-videos.com/csv/Sample-Spreadsheet-10-rows.csv"); 
int statusCode = http.GET(); 
Serial.println(http.getString()); 
http.end();