ESP8266作为客户端发送get请求和post请求的电路方案设计

系列文章目录

第一章ESP8266的java软件仿真测试
第二章ESP8266硬件与软件测试
第三章ESP8266客户端与Java后台服务器联调
第四章ESP8266客户端与JavaWeb服务器联调



前言

daodanjishui物联网核心原创技术之物联网监控系统设计


一、要实现的功能是什么?

对于上一章(第三章)而言,STM32F103C8T6用串口AT指令控制ESP8266作为客户端上传DHT11温湿度给私人java服务器(后台),这时候的ESP8266是作为客户端跟服务器的链接是TCP/IP长链接的,非常占用资源,对JAVAWEB开发不是很合适。JAVAWEB部署的网站用裸代码硬开发只需要使用Servlet且不需要套框架,servlet的生命期很短暂,响应完客户端提交的get或者是post请求就结束了,占用资源少响应速度快,值得提倡,缺点就是只能是服务端响应客户端的请求,反过来不行,如果使用websocket技术则可以解决该问题,这个问题以后再出一章来解决。
本文只介绍:让ESP8266作为客户端发送get请求和post请求,jsp服务器接收到请求之后在控制台打印出来,系统运行流畅掉线重连。

代码截图如下:
代码截图
硬件构成如下图所示:
硬件构成

二、使用步骤

1.下载源码

源码和教程下载的地址:https://gf.bilibili.com/item/detail/1107634114
直接跳转过去

服务器代码如下(示例):

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**

  • Servlet implementation class ChatServlet
    */
    @WebServlet(“/ChatServlet”)
    public class ChatServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**

    • @see HttpServlet#HttpServlet()
      */
      public ChatServlet() {
      super();
      // TODO Auto-generated constructor stub
      }

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      System.out.println(“进入doGet方法,响应get请求”);
      response.setContentType(“text/html;charset=UTF-8”);//设置响应内容和编码方式
      String user=request.getParameter(“signname”);//昵称
      System.out.println(user);

    }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      System.out.println(“进入doPost方法,响应post请求”);
      response.setContentType(“text/html;charset=UTF-8”);//设置响应内容和编码方式
      String user=request.getParameter(“user”);//昵称
      String speak=request.getParameter(“speak”);//说话内容
      System.out.println(user+“say:”+speak);
      }

}

2.读入数据

客户端部分代码如下:

if( Read_DHT11(&DHT11_Data)==SUCCESS)
{
printf(“\r\n读取DHT11成功!\r\n\r\n湿度为%d.%d %RH ,温度为 %d.%d℃ \r\n”,
DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci);
//printf(“\r\n 湿度:%d,温度:%d \r\n” ,DHT11_Data.humi_int,DHT11_Data.temp_int);
//sprintf((char*)p,“\r\n读取DHT11成功!\r\n\r\n湿度为%d.%d %RH ,温度为 %d.%d℃ \r\n”,
DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci);
//sprintf((char*)p,“hello,Temperature=%d.%d’C ,Humidity=%d.%d RH\r\n”,DHT11_Data.temp_int,DHT11_Data.temp_deci,DHT11_Data.humi_int,DHT11_Data.humi_deci);//返回温湿度给服务器
//sprintf((char*)p,“GET http://192.168.253.1:8080/test_TCP/ChatServlet?action=getMessages&signname=%d.%d %RH HTTP/1.1\r\nHost:192.168.253.1:8080\r\nConnection: keep-alive\r\n\r\n”,DHT11_Data.humi_int,DHT11_Data.humi_deci);//测试数据

	//sprintf((char*)p,"GET http://192.168.253.1:8080/test_TCP/ChatServlet?action=getMessages&signname=%d HTTP/1.1\r\nHost:192.168.253.1:8080\r\nConnection: keep-alive\r\n\r\n",DHT11_Data.humi_int);//测试数据	
	//sprintf((char*)p,"POST http://192.168.253.1:8080/test_TCP/ChatServlet?action=sendMessage&user=Robot1&speak=Humidity:%d.%dRH---Temperature:%d.%d'C HTTP/1.1\r\nHost:192.168.253.1:8080\r\nConnection: keep-alive\r\n\r\n",DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci);//测试数据

  sprintf((char*)p,"GET http://192.168.253.1:8080/test_TCP/ChatServlet?signname=%d HTTP/1.1\r\nHost:192.168.253.1:8080\r\nConnection: keep-alive\r\n\r\n",DHT11_Data.humi_int);//测试数据	
	//sprintf((char*)p,"POST http://192.168.253.1:8080/test_TCP/ChatServlet?action=sendMessage&user=Robot1&speak=Humidity:%d.%dRH---Temperature:%d.%d'C HTTP/1.1\r\nHost:192.168.253.1:8080\r\nConnection: keep-alive\r\n\r\n",DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci);//测试数据

}
else
{
	printf("Read DHT11 ERROR!\r\n");
	sprintf((char*)p,"hello,T=0 ,H=0\r\n");//返回温湿度给服务器
}

串口调试显示效果如下
串口打印
服务器打印如下:
get请求打印

post请求打印


总结

STM32库函数版本用串口AT指令控制ESP8266作为客户端发送get请求和post请求提交DHT11采集的温湿度数据给jsp服务器,jsp服务器接收到请求之后在控制台打印出来,系统运行流畅掉线重连。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

daodanjishui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值