Soru:
ESP8266HTTPClient ile basit GET isteği
Ccr
2017-10-15 20:56:53 UTC
view on stackexchange narkive permalink

Basit bir GET isteği yapmaya çalışıyorum. Ama her zaman -1 durum kodunu alırım. İşte tam kodum.

  #include <Arduino.h> # include <ESP8266WiFi.h> # include <ESP8266HTTPClient.h>_P8266HTTPClient.hAilituiientinexx "" Serial.print ("AP'ye Bağlanıyor"); WiFi.begin (AP_SSID, AP_PASSWORD); while (WiFi.status ()! = WL_CONNECTED) {gecikme (1000); Seri.print ("."); }} void setup () {Serial.begin (9600); pinMode (0,1); Serial.begin (9600); gecikme (300); Serial.println ("başlangıç"); WiFi.disconnect (); Serial.println ("bağlantısı kesildi"); wifiConnect (); Serial.println ("Bağlandı");} void döngü () {HTTPClient http; http.begin ("https://calm-falls-41696.herokuapp.com/api/v1/cards"); http.addHeader ("İçerik Türü", "uygulama / json"); int httpCode = http.GET (); Serial.println (httpCode); eğer (httpCode == HTTP_CODE_OK) {Serial.print ("HTTP yanıt kodu"); Serial.println (httpCode); Dize yanıtı = http.getString (); Serial.println (yanıt); } http.end ();}  

Wifi bağlantısı başarılı oldu. Ama seri terminalimde her zaman -1 görüyorum. PlatfromIO'yu Visual Studio kodunda kullanıyorum.

Güncelleme 1: URL düzeltildi.

  http.begin ("https: // sakin-falls-41696.herokuapp.com/api/v1/cards.json");

Ben de google.com ile test ettim. Ancak yine de -1 döndürüyor.

Eksiksiz, çalışan eskizinizi gönderin, böylece size yardımcı olun.
@LookAlterno Kodumun tamamını gönderdim.
Bağlanma aşamasında bir hata aldım. Çevremi kontrol etmeliyim. Üzerinde çalışıyorum.
AFAIK, ESP8266HTTPClient HTTPS'yi desteklemiyor. Ayrıca, neden GET yöntemiyle birlikte bir Content-Type başlığı kullanıyorsunuz? Bu hiç mantıklı değil çünkü GET isteklerinin bir gövdesi yok.
Http.begin için web sitesi sertifika ayak izini sağlamanız gerektiğine inanıyorum
Merhabalar, http.post'ta zaman aşımı hatasıyla ilgili bir sorunum var. 2 saniye içinde cihazımdan parçalar halinde veri alıyorum. Bu verileri web sunucuma göndermem gerekiyor. Örnek: 12 KB ... sonra 1 saniye bekle .. sonra 12 KB veri .. Web sunucusunda bağlantıyı sürdürmek ve 24 KB dosya bulundurmak yerine bu istekte 2 ayrı dosya gönderiyor. Bunun için httpclient kullanıyorum ve içerik uzunluğunu da iletmeyi denedim. Ama çalışmıyor. Lütfen kılavuz / yardım / destek.
Iki yanıtlar:
Ccr
2017-10-17 10:20:10 UTC
view on stackexchange narkive permalink

Musa'nın dediği gibi, http.begin için web sitesi sertifika ayak izini sağlamam gerekiyordu.

  void loop () {HTTPClient http; Dize parmak izi = "08: 3B: 71: 72: 02: 43: 6E: CA: ED: 42: 86: 93: BA: 7E: DF: 81: C4: BC: 62: 30"; Dize yolu = "https://calm-falls-41696.herokuapp.com/api/v1/cards.json"; http.begin (yol, parmak izi); int httpCode = http.GET (); Serial.println (httpCode); eğer (httpCode == HTTP_CODE_OK) {Serial.print ("HTTP yanıt kodu"); Serial.println (httpCode); Dize yanıtı = http.getString (); Serial.println (yanıt); } http.end (); gecikme (1000);}  
user31481
2017-10-16 20:05:30 UTC
view on stackexchange narkive permalink

Kodunuzu yalnızca URL'yi ve başlığı şu şekilde değiştirerek test ettim:

  // http.begin ("http://calm-falls-41696.herokuapp.com/api/ v1 / kartlar "); http.begin ("http://bing.com"); http.addHeader ("Content-Type", "text / html");  

Ve httpCode == 400'ü döndürüyor.

@tttapa'nın dediği gibi, kütüphane https'yi desteklemiyor.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...