ESP8266:http获取当前时间,并发送给服务器

做项目的时候,想做的东西比较小,一开始准备去掉时钟模块,发送假的时间给服务器

然后获取的时候直接根据数据id大小排序就可以得到最新数据

但是后来做大数据分析的时候发现没有时间不行,但是硬件上不能再多了,

于是就想干脆直接从网上抓取时间,然后和数据一起发送给服务器

灵感来自于获取天气。

访问即可直接获取时间

http://time.beijing-time.org/time.asp

一开始以为会出什么幺蛾子问题,后来发现除了时间延长之外别的还好

------------------------------------------------------------------------------------------------

6.4更新 问题还是有的,但是不是出在代码上,而是出在wifi上

用手机开热点的时候完全ok,没有什么问题

但是转到实验室wifi,就会出现卡死现象

一开始怀疑代码出错改了好久。

应该是网络问题吧,但是怎么解决呢??

------------------------------------------------------------------------------------------------

发现应该也不是网络问题,而是只能wifi重启之后第一次连接可以持续发送

第二次或者之后连接会发生卡死,(也不叫卡死,就是不发送数据了)

连热点没问题大概是因为他是热点是重启之后连接的第一个设备。

------------------------------------------------------------------------------------------------

热点没问题,一点问题都没有

String getTimeInfo()
{
  String output = "";
  WiFiClient client;
  const int httpPort = 80;
  if (!client.connect(host, httpPort))
  {
    Serial.println("connection failed");
    return "0";
    }
      // This will send the request to the server
      client.print(String("GET ") + url + " HTTP/1.1\r\n" +
                   "Host: " + host + "\r\n" + 
                   "Connection: close\r\n\r\n");
  delay(150);
  String str = "";
  String new_data="";
  while(client.available())
  {
    String line = client.readStringUntil('\r');
    str += line;
      }
   new_data =   str.substring(   str.indexOf("nyear")+6,    str.indexOf("nmonth")-2     ) ;   // get year
      output+=new_data;
      output+="-";
      new_data =   str.substring(   str.indexOf("nmonth")+7,    str.indexOf("nday")-2     ) ; //get month
      output+=new_data;
      output+="-";
      new_data =   str.substring(   str.indexOf("nday")+5,    str.indexOf("nwday")-2     ) ;
      output+=new_data;
      output+=" ";
      new_data =   str.substring(   str.indexOf("nhrs")+5,    str.indexOf("nmin")-2     ) ;
      output+=new_data;
      output+=":";
      new_data =   str.substring(   str.indexOf("nmin")+5,    str.indexOf("nsec")-2     ) ;
      output+=new_data;
      output+=":";
      new_data =   str.substring(   str.indexOf("nsec")+5,    str.length()-1     ) ;
      output+=new_data;
  //Serial.println(str);
  //output=str.substring(str.indexOf("Date"),str.indexOf("GMT")) ;
  return output;
}
返回值为String类型,如果要转为char *类型,使用String.c_str();即可。

猜你喜欢

转载自blog.csdn.net/b__t__t/article/details/80559469