繁体   English   中英

使用静态IP地址时ESP32 HTTPClient连接被拒绝

[英]ESP32 HTTPClient connection refused when using static IP address

下面的草图在使用DHCP时工作正常,但是在使用静态IP时,HTTPClient.begin()总是返回拒绝连接。 这是测试此问题的方法...如果简单地如下所示:

WiFi.config(local_IP, gateway, subnet);

包含HTTPClient将不起作用,但是如果注释掉此行,它将连接到服务器并返回正确的字符串。 我已经看过几次这个问题,但是从来没有一个好的答案。 有没有办法让HTTPClient与静态IP一起使用? 将ESP32 WebServer库与DHCP或固定IP一起使用可以很好地工作,只有此HTTPClient库不能同时与固定和DHCP一起使用。 无论是在ESP32还是ESP8266上使用,行为都相同。 谢谢你的帮助。

#include <Arduino.h>
#include <WiFi.h>
#include <WiFiMulti.h>
#include <HTTPClient.h>

#define USE_SERIAL Serial

WiFiMulti wifiMulti;
IPAddress local_IP(192, 168, 1, 111);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);

void setup() {

  USE_SERIAL.begin(115200);

  WiFi.begin("networkSSID", "myPassword");

  WiFi.config(local_IP, gateway, subnet);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

}

void loop() {

  if (WiFi.status() == WL_CONNECTED) {

    HTTPClient http;

    http.begin("http://www.mocky.io/v2/5c7ddbb13100006c0037600d");

    int httpCode = http.GET();

    if (httpCode > 0) {
      // HTTP header has been send and Server response header has been handled
      USE_SERIAL.printf("[HTTP] GET... code: %d\n", httpCode);

      if (httpCode == HTTP_CODE_OK) {
        String payload = http.getString();
        USE_SERIAL.println(payload);
      }
    } else {
      USE_SERIAL.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
    }

    http.end();
  }

  Serial.println(WiFi.localIP());
  delay(5000);

}

我不能百分百确定(目前无法测试),但这听起来像是您缺少DNS解析度。

尝试这个

...
IPAddress local_IP(192, 168, 1, 111);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(8, 8, 8, 8); // Google DNS

void setup() {

  USE_SERIAL.begin(115200);

  WiFi.begin("networkSSID", "myPassword");

  WiFi.config(local_IP, gateway, subnet, dns);
  ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM