admin管理员组文章数量:1630198
首先最开始的是学习太极创客的视频,学到网络服务端基本操作的时候碰到的问题:
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改成你手机开出来的热点。
很灵异居然成功了,我也想不明白为什么。
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
body {
background-color: #f0f0f2;
margin: 0;
padding: 0;
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
div {
width: 600px;
margin: 5em auto;
padding: 2em;
background-color: #fdfdff;
border-radius: 0.5em;
box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
}
a:link, a:visited {
color: #38488f;
text-decoration: none;
}
@media (max-width: 700px) {
div {
margin: 0 auto;
width: auto;
}
}
</style>
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana/domains/example">More information...</a></p>
</div>
</body>
</html>
然后我再去换回我连接WiFi的那个,一烧录进去,结果还是返回-1;
然后我想了想服务器发送一遍没有响应那么我就发送几遍一直发,然后我就把发送请求放到了这个函数里面结果成功了,但是结果有点糟糕,就是我们需要的那个html一直发送,停不下来,但是这个实验证实了我们发一遍不行就发两遍。
然后我就改了一下setup函数让它去发送两遍。
void setup() {
//初始化串口设置
Serial.begin(9600);
//设置ESP8266工作模式为无线终端模式
WiFi.mode(WIFI_STA);
//开始连接wifi
WiFi.begin(ssid, password);
//等待WiFi连接,连接成功打印IP
while (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
Send GET request to URL: http://www.example
Server Respose Code:
-1
URL: http://www.example
Send GET request to URL: http://www.example
Server Response Payload:
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type="text/css">
body {
background-color: #f0f0f2;
margin: 0;
padding: 0;
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
div {
width: 600px;
margin: 5em auto;
padding: 2em;
background-color: #fdfdff;
border-radius: 0.5em;
box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
}
a:link, a:visited {
color: #38488f;
text-decoration: none;
}
@media (max-width: 700px) {
div {
margin: 0 auto;
width: auto;
}
}
</style>
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana/domains/example">More information...</a></p>
</div>
</body>
</html>
还有另一种方法就是在请求服务器这里给一个while,原理和上面那个一样。
以上便是我学习中碰到的全部内容,就是如果你在下载esp8266的库的时候下载的3.0以上的版本应该就会碰到以上问题。
总结一下
第一就是换wifi
第二就是向服务器发送两遍请求
版权声明:本文标题:esp8266学习客户端的时候请求服务器响应失败(太极创客学习者) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1729056927a1184074.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论