2016-08-31 4 views
0

내 프로젝트에 도움이 필요합니다. 다음은 내 코드입니다 :GET 요청에서 HTTP 헤더 건너 뛰기

void ConexaoServer(){ 
    uint8_t buffer[1024] = {0}; 

    if (wifi.createTCP(HOST_NAME, HOST_PORT)) { 
     Serial.print("Conexao com o Host OK!\r\n"); 
    } else { 
     Serial.print("Conexao com o Host com ERRO!\r\n"); 
    } 

    char *ComandoGET = "GET /teste HTTP/1.1\r\nHost: SmartHome\r\nConnection: close\r\n\r\n"; 
    wifi.send((const uint8_t*)ComandoGET, strlen(ComandoGET)); 

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

그리고

Received:[HTTP/1.1 200 OK 
X-Powered-By: Express 
Content-Type: text/html; charset=utf-8 
Content-Length: 4 
ETag: W/"4-wArb1VtkpsN6In8g50pGNw" 
Date: Wed, 31 Aug 2016 01:26:41 GMT 
Connection: close 

Luiz] 

직렬

에서 Node.js를로부터받은하지만 난 그냥 Received:[Luiz]를 수신 할. 내가 어떻게 할 수 있니?

+0

왜 노드 (js 랜드) 자체에서 HTTP 요청을 수행하지 않습니까? 그렇게하면 HTTP를 수동으로 구문 분석 할 필요가 없습니다 ... – mscdex

+0

@mscdex Node.js에서 어떻게합니까? 여기 내 코드가 app.js에있다. var express = require ('express'); var app = express(); app.get ('/ teste', function (req, res)) { \t res.send ('Hello World!'); }); VAR 서버 app.listen = (3000, "로컬 호스트"함수() { \t VAR 호스트 server.address =() 어드레스;.. \t VAR 포트 server.address =() 포트; \t 콘솔. 로그 ('URL 예제 http : // % s : % s', 호스트, 포트); }); –

답변

1

이중 개행 (\r\n\r\n)을 찾아서 그 다음에 문자를 사용해야합니다.

char payload[1024] = ""; 
char *pl = strstr((char*)buffer, "\r\n\r\n"); 
if (pl != NULL) 
{ 
    strcpy(payload, pl+4); 
    Serial.println(payload); 
} 
관련 문제