JSON API-ответы имеют странное поведение в браузере - PullRequest
0 голосов
/ 09 мая 2019

Я создаю API на микроконтроллере Wi-Fi.Веб-сайт выполняет запросы, и микроконтроллер (ESP8266) должен отвечать данными JSON.

У меня возникают странные проблемы с ответами HTTP:

  • Когда веб-сайт выполняет первый запрос, онполучить пустой ответ

    • После этого ответы работают, но: когда я изменяю параметры запроса, веб-сайт получает ответ от предыдущего

ESP8266 отправляет домашнюю страницу без проблем с этим ответом HTTP: client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html; charset=UTF-8"); client.println(""); client.println("<!DOCTYPE HTML>");

Проблема возникает с этим кодом:

// read incoming request

String request = client.readStringUntil('\r\n');

client.flush();


// read the request

if (request.length() > 15) {

// check if request is an api call and not a favicon call

if (request.indexOf("favicon") < 0) {

rqlength = request.length() - 15 ;

request = request.substring(5);

rqs = "";

rq["title"] = "request";

rq["date"] = request.substring(0,8);

rq["hour"] = String(timeClient.getHours());

serializeJson(rq, rqs);

// check if request is an api call and not a favicon request

// send the request to arduino

Serial.print(rqs);

// wait the response from the arduino

while (Serial.available()) {

incdata = Serial.readString();

cansend = true;

}

// send the arduino JSON data to the client : The issue seems to come from here ?

client.println(F("HTTP/1.1 200 OK"));

client.println(F("Content-Type: application/json"));

client.println(F("Connection: close"));

client.println("");

client.print(incdata);

} 

Кажется, проблемапроизойдет из-за кеша или http заголовка?Но я не могу найти решение.Есть идеи?

...