Я пытаюсь выполнить запрос RESTful POST, используя библиотеку WifiESP (https://github.com/bportaluri/WiFiEsp а>). Я могу успешно выполнить запрос с помощью curl, но постоянно получаю сообщение об ошибке с помощью Arduino и ESP. Я подозреваю, что проблема связана с ручным форматированием POST-запроса, который требует библиотека, но я не вижу ничего плохого. Вот мой продезинфицированный код:
if (client.connect(server, 80)) {
Serial.println("Connected to server");
// Make a HTTP request
String content = "{'JSON_key': 2.5}"; // some arbitrary JSON
client.println("POST /some/uri HTTP/1.1");
client.println("Host: http://things.ubidots.com");
client.println("Accept: */*");
client.println("Content-Length: " + sizeof(content));
client.println("Content-Type: application/json");
client.println();
client.println(content);
}
Ошибка, которую я получаю (через последовательный монитор), такова:
Connected to server
[WiFiEsp] Data packet send error (2)
[WiFiEsp] Failed to write to socket 3
[WiFiEsp] Disconnecting 3
Мои успешные запросы на скручивание выглядят так:
curl -X POST -H "Content-Type: application/json" -d 'Some JSON' http://things.ubidots.com/some/uri
\r, так и\n, а не только\n, когда вы используете функциюprintln. Попробуйте выполнить\ns вручную и использовать функциюprint. если это не сработает, распечатайте все это в Serial и сравните его с трассировкой wireshark вашего поста curl. - person leetibbett   schedule 28.12.2016\r\nоказалось, что это не проблема, но это заставило меня посмотреть документацию по протоколу HTTP, которая помогла мне найти несколько других проблем. - person Troy D   schedule 29.12.2016