esp8266学习客户端的时候请求服务器响应失败(太极创客学习者)
首先最开始的是学习太极创客的视频,学到网络服务端基本操作的时候碰到的问题:
1.最开始复制过来的带代码,一编译进去就报错

然后我就复制问题到百度上就是说视频里面的库版本太低了,所包含的只是3.0版本以下才是
![]()
而3.0以上的版本的函数已经更新了,需要改成这样

此前还需要在最上面定义这个
![]()
然后我就运行了一遍结果发现还是不行结果如下:

然后再回到函数下面重点4的代码的意思就是如果我的服务器响应回来就返回1或者-1;返回1则会返回你需要的东西 ,很显然我的服务器并没有响应。
void httpClientRequest(){//重点1 创建 HTTPClient 对象HTTPClient httpClient;//重点2 通过begin函数配置请求地址。此处也可以不使用端口号和PATH而单纯的httpClient.begin(Client,URL); //httpClient.begin(URL); Serial.print("URL: "); Serial.println(URL);//重点3 通过GET函数启动连接并发送HTTP请求int httpCode = httpClient.GET();Serial.print("Send GET request to URL: ");Serial.println(URL);//重点4. 如果服务器响应HTTP_CODE_OK(200)则从服务器获取响应体信息并通过串口输出//如果服务器不响应HTTP_CODE_OK(200)则将服务器响应状态码通过串口输出if (httpCode == HTTP_CODE_OK) {// 使用getString函数获取服务器响应体内容String responsePayload = httpClient.getString();Serial.println("Server Response Payload: ");Serial.println(responsePayload);} else {Serial.println("Server Respose Code:");Serial.println(httpCode);}//重点5. 关闭ESP8266与服务器连接httpClient.end();
}
此后我又去网上找了很久找到一个方法就是把你连接的那个WiFi改成你手机开出来的热点。
很灵异居然成功了,我也想不明白为什么。
Example Domain
Example Domain
This domain is for use in illustrative examples in documents. You may use thisdomain in literature without prior coordination or asking for permission.
然后我再去换回我连接WiFi的那个,一烧录进去,结果还是返回-1;
然后我想了想服务器发送一遍没有响应那么我就发送几遍一直发,然后我就把发送请求放到了这个函数里面结果成功了,但是结果有点糟糕,就是我们需要的那个html一直发送,停不下来,但是这个实验证实了我们发一遍不行就发两遍。

然后我就改了一下setup函数让它去发送两遍。
void setup() {//初始化串口设置Serial.begin(9600);//设置ESP8266工作模式为无线终端模式WiFi.mode(WIFI_STA);//开始连接wifiWiFi.begin(ssid, password);//等待WiFi连接,连接成功打印IPwhile (WiFi.status() != WL_CONNECTED) {delay(1000);Serial.print(".");}Serial.println("");Serial.print("WiFi Connected!");int i=0;for(i=0;i<2;i++){httpClientRequest();}}
最后和预料的一样,第一遍返回的是-1.第二遍成功了。
WiFi Connected!URL: http://www.example.com
Send GET request to URL: http://www.example.com
Server Respose Code:
-1
URL: http://www.example.com
Send GET request to URL: http://www.example.com
Server Response Payload:
Example Domain
Example Domain
This domain is for use in illustrative examples in documents. You may use thisdomain in literature without prior coordination or asking for permission.
还有另一种方法就是在请求服务器这里给一个while,原理和上面那个一样。

以上便是我学习中碰到的全部内容,就是如果你在下载esp8266的库的时候下载的3.0以上的版本应该就会碰到以上问题。
总结一下
第一就是换wifi
第二就是向服务器发送两遍请求
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
