Как построить HTTP-ответ с ESP8266 и Arduino

Я хочу переключать некоторые светодиоды на моем устройстве Android. Эти светодиоды подключены к цифровым контактам моего Arduino, который также подключен к ESP8266. Теперь мой ESP8266 определен как AccessPoint, и мой планшет может отправлять HTTP-запросы (например, http://192.168.4.1/?pin=11). Я нашел код здесь http://allaboutee.com/2015/01/20/esp8266-android-application-for-arduino-pin-control/

Это работает нормально, но мой вопрос, какие поля заголовка HTTP должны использоваться? В этом коде он использовал некоторые (например, Content-Length), но есть гораздо больше возможных (Date, Server, Content-Language,...).

Эти поля являются необязательными или какие из них необходимо использовать для создания правильного ответа?

Вот кусок кода, который я не понимаю:

void sendHTTPResponse(int connectionId, String content)

{

 String httpResponse;
 String httpHeader;

 httpHeader = "HTTP/1.1 200 OK\r\nContent-Type: text/html; charset=UTF-8\r\n"; 
 httpHeader += "Content-Length: ";
 httpHeader += content.length();
 httpHeader += "\r\n";
 httpHeader +="Connection: close\r\n\r\n";
 httpResponse = httpHeader + content + " ";
 sendCIPData(connectionId,httpResponse);

}

1 ответ

Решение

Во многом это зависит от клиента (то есть потребителя), какие поля являются обязательными, а какие - обязательными.

Единственное, что всегда требуется, это "HTTP/1.1 200 OK". Конечно, вам нужно заменить этот код состояния, если вы не отправляете сообщение OK.

Другие вопросы по тегам