2017-03-29 1 views
0

私のサーバーの応答に問題があります。私は応答のすべてのヘッダーを無視する必要があります。ESP8266の応答ですべてのヘッダーを無視するには?

HTTP/1.1 200 OK 
Content-Type: text/html; charset=utf-8 
Connection: close 
Status: 200 OK 

Balance:50 
uint32_t len = wifi.recv(buffer, sizeof(buffer), 10); 
if (len > 0) { 
    Serial.print("Received:["); 
    for(uint32_t i = 0; i < len; i++) { 
    Serial.print((char)buffer[i]); 
    } 
    Serial.print("]\r\n"); 
} 
+2

HTTP仕様では、ヘッダーと本文の区切り文字は「\ r \ n \ r \ n」となっているので、すべての入力を破棄してから、体。 – par

+0

@parあなたは私にそのヒントを教えてもらえますか? – zxcetera

+0

[この例](https://github.com/imjosh/espLedDimmer/blob/master/arduino/espLedDimmer/espLedDimmer.ino)のループ機能を調べて、Webページを読み込んでLEDの輝度を設定してみてください。 – leetibbett

答えて

1

まず私はその後、私のトリガーのインデックスを(見つける文字列変数内のすべての応答を入れて「OK」私はまた、使用することができます「\ rを\ nは\ rを\ n」は私は、なぜ私は知りません私自身のトリガーLOLを使用して)これらのヘッダーをすべてフィルタリングすることができます。

wifi.send((const uint8_t*)httpPost, strlen(httpPost)); 
int t = 0; 
char resp[] = {}; 
uint32_t len = wifi.recv(buffer, sizeof(buffer), 1024); 
if (len > 0) { 
    String resp; 
    for (uint32_t i = 0; i < len; i++) { 
    resp += String((char)buffer[i]); 
    } 
    Serial.println(resp); 

    int ind = resp.indexOf("OK",20); 
    String response; 
    for(int x = ind+3;x<=resp.length();x++){ 
    response += resp[x]; 
    } 
    Serial.println(response); 
} 
関連する問題