Nodemcu ПУБЛИКУЕТ ответ "-1"

Устройство Nodemcu возвращает HTTP - ответ -1 для запроса POST в django rest api.

Я попробовал приведенный ниже http-запрос к почтальону, и он отлично работает.

http://localhost:8000/api/datalogs/?plant=http://localhost:8000/api/plants/1/&light=23&temperature=24&humidity=75&soil=Dry&moisture=787&remarks=/

Это мой запрос на публикацию в arduino:

if(WiFi.status() == WL_CONNECTED) {
    HTTPClient http;

    http.begin(host_url);

    http.addHeader("Content-Type", "application/x-www-form-urlencoded"); 
    httpCode = http.POST(postData);

    payload = http.getString();
    http.end();
}

Ожидаемый результат-200, но я получаю -1. Может кто-нибудь, пожалуйста, объяснить?

, 👍0

Обсуждение

значения host_url и postData не отображаются ... ваш код отправляет неизвестные данные .. поэтому объяснять нечего, @jsotola

вы используете имя "localhost" в запросе с другого устройства?, @Juraj

можете ли вы более подробно рассказать о коде на стороне nodemcu, например, что такое host_url, а также postdata. В то же время обновите форму кода на стороне Django, например, какая функция получает http-ответ от nodemcu., @ Tarun

Да, спасибо. Возможно, я связываюсь с локальным хостом, в то время как у моего устройства другой ip-адрес, чем у моего компьютера.. Я должен сначала попробовать [Юрай](https://arduino.stackexchange.com/users/37622/juraj), @Tanveer Hoque

Значение host_url равно http://localhost:8000 и постданные таковы"plant="+String(host)+"plants/1/&light="+String(lux)+"&temperature="+String(temperature)+"&humidity="+String(humidity)+"&soil="+mRes+"&moisture="+mVal+"&remarks=/"; Я думаю, что проблема может быть в **локальном хосте** [jsotola](https://arduino.stackexchange.com/users/40318/jsotola), @Tanveer Hoque

Итак, я попробовал использовать **ip-адрес**, также настроенный из **настроек django**, отлично работает с моего мобильного устройства, клиента Insomnia REST API. Но Nodemcu возвращает **301 Перемещенный Навсегда**., @Tanveer Hoque

если он возвращает 301, то разрешен только https, поэтому URL-адрес должен использовать https://, @Juraj


1 ответ


Лучший ответ:

1

Итак, я нашел решение. Это была очень простая ошибка. IP-адрес NodeMCU не совпадает с IP-адресом компьютера, на котором работал сервер.

Я изменил строку localhost с IP-адресом моего компьютера, и это сработало отлично.

,