首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ESP8266从网页获取请求返回连接被拒绝

ESP8266从网页获取请求返回连接被拒绝
EN

Stack Overflow用户
提问于 2017-07-15 07:00:41
回答 1查看 1.4K关注 0票数 0

我希望能够将数据从网页发送到esp8266并控制一个引脚,每当我按下网页上的按钮时,它就返回ESP和CONNECTION REFUSED的i地址。我做错了什么?

ESP代码:

代码语言:javascript
复制
void setup() {
  Serial.begin(115200);
  delay(100);

  Serial.println();
  Serial.println();
  Serial.print("Connecting to: ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

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

  Serial.println("");
  Serial.println("WiFi connected");  
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.print("Netmask: ");
  Serial.println(WiFi.subnetMask());
  Serial.print("Gateway: ");
  Serial.println(WiFi.gatewayIP());

}

int value = 0;


void loop() {
   HTTPClient http;

   http.begin("192.168.0.24:80");
   int httpCode = http.GET();

   if(httpCode > 0){
    String payload = http.getString();
    Serial.println(payload);
    }
    http.end();
    delay(3000);

}

HTML网站:

代码语言:javascript
复制
<html>
<head>
  <title>ESP8266 toggle page</title>
</head>
  <body>
    <button id="3" class="led">Toggle pin 3</button>

    <script src="jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
          $(".led").click(function(){
            var p = $(this).attr('id');
            $.get("http://192.168.0.16:80", {pin:p});
          });
        });
    </script>
  </body>
</html>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-15 18:56:12

您正在使您的esp8266充当客户端而不是服务器。您应该让您的esp8266接受请求,而不是发出请求。然后,您的esp8266将是服务器,您的网站将成为客户端。您将能够从您的网站向您的esp8266上的服务器提出请求并处理它。

在您的包含中添加:

代码语言:javascript
复制
#include <ESP8266WebServer.h>

在“任何功能”之前加上:

代码语言:javascript
复制
ESP8266WebServer server(80);

在您的setup()中添加:

代码语言:javascript
复制
server.on("/", HTTP_GET, handleTogglePin);
server.begin();

在您的loop()中添加:

代码语言:javascript
复制
server.handleClient();

setup()之前添加:

代码语言:javascript
复制
void handleTogglePin() {
    if (server.hasArg("pin")) { server.send(500, "text/plain", "Missing argument: pin"); return; }
    Integer pin = server.arg("pin").toInt();
    if (digitalRead(pin) == HIGH) {
        digitalWrite(pin, LOW);
    } else {
        digitalWrite(pin, HIGH);
    }
}

哦,别忘了在setup()中设置您的引脚输出:

代码语言:javascript
复制
pinMode(3, OUTPUT);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45115449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档