esp8266拉取天气API时无法完全读取API内容如何解决? 10C

问题:在使用esp8266获取实时天气状况时没有问题,但是在获取未来一天的天气状况时出现了获取的信息不完全,我尝试改变了HTTP消息获取长度最大值但是没有效果,在串口监视器看到的信息不完全,但是在浏览器中测试同样的请求api是可以获得完整的消息的。

#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include <Wire.h>


const char* ssid     = "";         
const char* password = "";        
const char* host = "api.seniverse.com";
const char* APIKEY = "";  
const char* city = "tianjin";     
const char* language = "en";//zh-Hans 简体中文


const unsigned long BAUD_RATE = 115200;                   
const unsigned long HTTP_TIMEOUT = 5000;               
const size_t MAX_CONTENT_SIZE = 5000;                  





WiFiClient client;
char response[MAX_CONTENT_SIZE];
char endOfHeaders[] = "\r\n\r\n";


void setup() {
  WiFi.mode(WIFI_STA);     //设置esp8266 工作模式
  Serial.begin(BAUD_RATE);
  delay(10);
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);   //连接wifi
  while (WiFi.status() != WL_CONNECTED) {
    delay(100);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  delay(100);
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());   //返回8266获得的ip地址
  client.setTimeout(HTTP_TIMEOUT);


}


void loop() {

  while (!client.connected()){
     if (!client.connect(host, 80)){
         Serial.println("connection....");
         delay(100);
     }
  }
  if (sendRequest(host, city, APIKEY) && skipResponseHeaders()) {
    clrEsp8266ResponseBuffer();
    readReponseContent(response, sizeof(response));
  }
  delay(5000);
}


bool sendRequest(const char* host, const char* city, const char* APIKEY) {
  String GetUrl = "/v3/weather/daily.json?key=";
  GetUrl += APIKEY;
  GetUrl += "&location=";
  GetUrl += city;
  GetUrl += "&language=";
  GetUrl += language;
  GetUrl += "&start=0&days=2";

  client.print(String("GET ") + GetUrl + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n\r\n");
  Serial.println("create a request:");
  Serial.println(String("GET ") + GetUrl + " HTTP/1.1\r\n" +
               "Host: " + host + "\r\n" +
               "Connection: close\r\n");
  delay(1000);
  return true;
}


bool skipResponseHeaders() {
  bool ok = client.find(endOfHeaders);
  if (!ok) {
    Serial.println("No response or invalid response!");
  }
  return ok;
}

void clrEsp8266ResponseBuffer(void){
    memset(response, 0, MAX_CONTENT_SIZE);      //清空
}


void readReponseContent(char* content, size_t maxSize) {
  Serial.println(*content);
  size_t length = client.peekBytes(content, maxSize);
  delay(100);
  Serial.println("Get the data from Internet!");
  content[length] = 0; 
  Serial.println(content);
  Serial.println("Read data Over!");

  client.flush();
  delay(2000);
}

图片说明

1个回答

Solozxy
Solozxy 多谢,但是我这个程序存不到完整api内容的原因是什么呢
7 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
天气api,聚合天气
希望能帮助到大家,调用没有问题,一直在用 TODO的地方需要去聚合申请的key 我写的方法已经转为DataTable,需要的同志可以直接用 分是高了点,这里肯定能用,不会了联系我 www.ljw830@163.com
天气api
工作需要用这个.随手翻了下..和风天气https://www.heweather.com/openweathermap http://openweathermap.org/去死去死分割线突然发现以下里面有网友给了好多.上面白写了 - -!就这样吧https://www.v2ex.com/t/386680#reply17 https://www.zhihu.com/question/2057528
百度天气API 获取天气
一、apikey获得地址 http://lbsyun.baidu.com/apiconsole/key  二、URL的获取 http://api.map.baidu.com/telematics/v3/weather?location=" + URLEncoder.encode("南京", "UTF-8") + "&output=json" +"&ak=*******" +"&mcod
支付API: 拉取订单评价数据
<p>n <span style="font-size:12pt;"><span>帮助学员快速掌握微信支付开发</span>, <span>并提供相关工具及封装类使得学员开发周期从</span><span>2-4</span><span>周的时间缩短至</span><span>2-4</span><span>天</span><span>.</span></span><span style="font-size:12pt;"></span>n</p>n<p>n <span style="font-size:12pt;"><span>培训目标</span></span><span style="font-size:12pt;"></span>n</p>n<p>n <span style="font-size:12pt;">1.<span>掌握微信支付相关账号开通</span><span>,</span><span>应用场景及流程</span></span><span style="font-size:12pt;"></span>n</p>n<p>n <span style="font-size:12pt;">2.<span>掌握微信支付开发环境的搭建及</span><span>web2py</span><span>使用</span><span>.</span></span><span style="font-size:12pt;"></span>n</p>n<p>n <span style="font-size:12pt;">3.<span>学会相关</span><span>api</span><span>的使用</span></span><span style="font-size:12pt;"></span>n</p>n<p>n <span style="font-size:12pt;">4.</span><span style="font-size:12pt;"><span>跟老师一起</span></span><span style="font-size:12pt;"><span>进行需求分析</span>,接口</span><span style="font-size:12pt;"><span>设计</span></span><span style="font-size:12pt;"><span>完成</span>api</span><span style="font-size:12pt;"><span>封装类</span></span><span style="font-size:12pt;"><span>的开发</span></span><span style="font-size:12pt;">,进一步简化微信支付开发</span><span style="font-size:12pt;"></span>n</p>n<p>n <span style="font-size:12pt;">5.<span>使用课程提供的工具及新设计的</span><span>python</span><span>类</span><span>,</span><span>将开发周期从</span><span>2-4</span><span>周缩短至</span><span>2-4</span><span>天</span></span><span style="font-size:12pt;"></span>n</p>n<p style="text-align:left;">n <span style="font-size:10.5pt;"> </span>n</p>n<p>n <span style="font-size:12pt;"><span>培训内容主要分为</span>5<span>大部分</span><span>: </span></span><span style="font-size:12pt;"><br /></span><span style="font-size:12pt;">1.<span>微信支付相关账号开通</span><span>,</span><span>应用场景及支付流程</span></span><span style="font-size:12pt;"><br /></span><span style="font-size:12pt;">2.<span>开发环境搭建及相关工具介绍</span></span><span style="font-size:12pt;"><br /></span><span style="font-size:12pt;">3.web<span>框架</span><span>web2py</span><span>的使用</span></span><span style="font-size:12pt;"><br /></span><span style="font-size:12pt;">4.<span>设计</span><span>WxPay</span><span>类</span><span>, </span><span>封装</span><span>api</span><span>调用</span></span><span style="font-size:12pt;"><br /></span><span style="font-size:12pt;">5.<span>使用封装类进行微信支付开发</span></span><span style="font-size:12pt;"></span>n</p>n<br />
ESP8266 RTOS SDK API
ESP8266 RTOS SDK API 参考_20b-esp8266_rtos_sdk_api_reference_v1.4.0
完全API
在哪里可以找到完全API的?还有,在编程时怎么用API,例如在C++和C#里
API的问题,如何读取控制台的内容
首先我打开一个控制台,rn然后写一个程序来读取控制台的内容,请问如何实现,谢谢大家的回复
简易天气api
https://hanyu.baidu.com/s?wd=%E8%8B%8F%E5%B7%9E%E5%90%B4%E4%B8%AD%E5%8C%BA%E6%85%A7%E7%81%B5%E8%B7%AF%E6%9C%8D%E5%8A%A1%E7%A1%AE%E5%AE%9E%E6%AD%A3%E5%9C%A8%E5%B0%8F%E5%A6%B9%E5%95%AA%E5%95%AA%E5%95%AA...
求教 天气api
最近中国气象台的几个接口登陆不上去了,查了半天只找到了几个收费的天气api接口,国外的也发现了好几个,但是国外的好想不是很准确,请教各位你们再用什么的天气api呢?
百度天气api初体验
正在学习json和jquery ajax,想找个api练练手。就拿百度免费的api来练练手。 首先需要在本地搭建一个服务器,这里选择XAMPP(无脑搭建本地测试服务器,前端开发人员的测试神器),然后开启里面的sql,apache等服务 本地环境搭建好以后就可以开始写代码了,php代码就不用自己写了,百度已经给你写好了,只需要把自己的apikey加到里面就行了, 只管重要的一点需要把最
查看天气可用的api
http://www.weather.com.cn/data/sk/101160201.html 返回结果 {"weatherinfo":{"city":"定西","cityid":"101160201","temp":"13","WD":"西北风","WS":"2级","SD":"8%","WSE":"2","time":"17:00","isRadar":"0","Radar":"
一个天气api
一个天气api http://wthrcdn.etouch.cn/WeatherApi?city=%E5%8C%97%E4%BA%AC 可以查询北京的天气。city=后面是城市的名字,此处为北京。 返回格式为XML,gzip压缩。
天气API Http接口
通过第三方的Http接口查询天气信息。 低频的访问,而且免费。推荐YY天气(http://www.yytianqi.com/api.html)和天气API(https://www.tianqiapi.com/?action=v1)。 二者都提供通过城市ID和城市IP查询实时性高的天气情况,阴晴、温度、湿度、风力、风向等。 城市ID会对应城市名称。关于这个映射:YY天气有Http接口。天气AP...
可用百度天气api
api key http://lbsyun.baidu.com/apiconsole/key http://api.map.baidu.com/telematics/v3/weather?location=深圳&output=json&ak=h1OVyFGdHlfMkKLOEe98aDTPPWVUZcOQ
免费的天气Api
http://www.heweather.com/products 记下来自己用
和风天气API数据分析
注册和风天气获取key,请求数据时需要用到,具体可查看文档 请求数据示例 3-10天天气预报 { &quot;HeWeather6&quot;: [ { &quot;basic&quot;: { &quot;cid&quot;: &quot;CN101010100&quot;, &quot;location&quot;: &quot;北京&quot;, &q
天气API的调用
API store:http://www.avatardata.cn/ 免费API自己申请,不需要身份证验证 贴代码 import requests import json wea_api_url = "http://api.avatardata.cn/Weather/Query" my_wea_key = 'e38a3ff97e294360a9b9cfa397a61deb' def i
yahoo天气API
Build+a+Handy+AS3+Weather+App+with+the+Yahoo+API
百度天气API使用
该项目利用百度天气API接口,在tomcat服务器配置,在浏览器上显示城市最近四天的天气及相关的天气图标。
python API 查询天气
命令行输入&quot;weather 城市名&quot;即可查询天气相关信息。 运用天气API读取相关JSON内天气信息。 天气API及用到的_city.json可参见https://www.sojson.com/blog/305.html import json , requests , sys jsonWeather=open(r&quot;C:\shell\_city.json&quot;,'r',encoding=...
新浪天气api
package com.smartdot.dcu;/** * java获取新浪天气预报代码 */ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.FileInputStream; import java.
天气API 汇总
腾讯 http://sou.qq.com/online/get_weather.php?callback=Weather&city=南京 中国天气-weather.com.cn http://61.4.185.48:81/g/ (根据IP查询城市ID) http://m.weather.com.cn/data/101110101.html(六天预报) http://www.weather
雅虎天气API调用
雅虎天气API调用 http://blog.csdn.net/a497785609/article/details/16808123
新浪天气API
http://php.weather.sina.com.cn/xml.php?city=广州&password=DJOYnieT8234jlsK&day=4 下载即可用,免费天气API
和风天气python下的api
和风天气的python代码,嘻嘻我们很高兴的与你分享和风天气最新版本的天气数据API服务,目前的版本代号为s6 如果你寻求更早期的版本(x3和v5)文档,可以参考历史版本接口。请注意,当你看到这篇文章的时候,新注册的用户仅能使用s6版本的接口服务。 任何问题,请先查看本接口文档或帮助中心,可以节省更多的时间。 不建议以 IP 进行访问,IP变更导致的后果,自行承担
雅虎天气api
请教各位,我想做一个天气预报的小程序,之前用的Google天气api,但是发现Google做的是全球的服务,所以准确度不是很好;于是想着用yahoo的试试,但是不知道yahoo api接口,在网上找到个接口:http://weather.yahooapis.com/forecastrss?w=2442047&u=c,发现此接口只返回了近两天的天气情况,而且天气的信息不够全面;请教哪位知道更详细的雅虎天气api?
前端开发之调用天气api
高德接口:key自己申请哈 呵呵,记住创建key的时候一定要选web服务,不是web前端,否则失败 http://restapi.amap.com/v3/weather/weatherInfo?key=key&city=广州 点击打开使用说明
阿里云天气api调用方法。
阿里云天气查询api的调用。
中国天气网 API
中国天气网 API《真正的中国天气api接口xml, json》详解前言某天想写个天气软件,于是上网找找有没有免费的天气 API 。发现许多的API不是收费,就是不能用了(心塞塞)。最后找到这篇文章 真正的中国天气api接口xml,json(求加精) … 心里那个高兴啊,终于找到一个能用的天气 API 了。 用浏览器试了一下,确实不错,作者晒出的API都是能用的。于是便写代码捣鼓解析 API
百度API天气解析
百度API解析文档说明,这是车联网的api,详细的展示出传回来的数据,大家可以看看
[学习笔记]如何调用百度天气api,学习自百度api
学习如何调用网络上的接口,得到数据,以百度天气为例,记录学习过程
中国天气网天气API接口类
中国天气网天气API接口类,需要到中国天气网申请接口
心知天气 - 天气数据API文档
心知天气 - 天气数据API文档
asp.net调用百度天气ApI获取天气
asp.net调用百度天气ApI获取天气,可指定任意城市获取未来3天的天气情况。
调用天气api实现查询各城市天气
调用的api数据为haoservice.com网站提供的天气数据。 如下图,我们需要向其传递的参数有两个,一个为我们自己申请的key,一个为城市名字。 首先定义两个变量,一个存储key,一个存储接口地址。 public static String key = "674a9e7feb0d439d84e2dee75d964c**"; //key稍微变动了一下 public static
天气api(通过城市名查询天气)
public function show(){ //1、初始化 $ch = curl_init(); //2、设置参数 $url = 'http://wthrcdn.etouch.cn/weather_mini?city=北京市'; curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT...
Unity天气效果---天气API获取
     本部分分两份,第一部分介绍获取实际天气api的操作。第二部分介绍unity官方插件Enviro。        首先分享两个天气API获取方式,一个国内,一个国外。   先分享国内的:     中国天气网地址:http://www.weather.com.cn       当然还有其他超级多的接口,具体有这篇文章也在介绍总结。       先标注一下国内接口部分使用到的地区...
通过新浪天气api查询天气
通过新浪天气api,查询天气,获取天气信息api,获取天气api,ios获取天气信息api,百度地图api获取天气,获取天气信息api接口,天气预报获取api接口,未来三天全国天气预报,未来三天全国天气,未来三天天气预报
API如何取系统时间啊?
API方式怎么取系统时间啊?rnrn知道的贴下代码,谢谢,我要能自己格式化时间的!是API的
ESP8266 Non-OS SDK API 参考
ESP8266EX 拥有完整的且⾃成体系的 Wi-Fi ⽹络功能,既能够独⽴应⽤,也可以作为从机搭载于其他主机 MCU 运⾏。当 ESP8266EX 独⽴应⽤时,能够直接从外接 Flash 中启动。内置的⾼速缓冲存储器有利于提⾼系统性能,并且优化存储系统。此外 ESP8266EX只需通过 SPI/SDIO 接⼝或 I2C/UART ⼝即可作为 Wi-Fi 适配器,应⽤到基于任何微控制器的设计中。
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件