需求分析:
1.需要Linux c 网络编程基础,
2.需要了解 http 协议
3.需要天气信息相关api(可以从阿里云上购买,很便宜的!)
4.需要cJSON解析库(因为获取到的天气信息一般是用cJSON
封装,有的是用xml封装则需要相关解析库)
cJSON下载链接:https://github.com/DaveGamble/cJSON
cJSON在线代码格式化:http://tool.oschina.net/codeformat/json
cJSON简解及使用:
cJSON核心结构体:
typedef struct cJSON
{
struct cJSON *next;
struct cJSON *prev;
struct cJSON *child;
int type;
char *valuestring;
int valueint;
double valuedouble;
char *string;
} cJSON;
说明:cJSON数据是以(键-值)形式存在。每个键对应的值都可以
访问(valuestring、valueint、valuedouble)成员得到。
主要用到的函数:
1. CSJON_PUBLIC(cJSON*) cJSON_Parse(const char *value);
用了获得根节点,
2. CSJON_PUBLIC(cJSON*) cJSON_GetObjectItem(const cJSON* const object, const char *const string);
用来获得根节点下的子节点,
3. CSJON_PUBLIC(void) cJSON_Delete(const cJSON *item);
用来释放为根节点分配的内存!
获取天气的http协议:
"GET /phone-post-code-weeather?"
"phone_code=021 "
"HTTP/1.1\r\n"
"Host:ali-weather.showapi.com\r\n"
"Authorization:APPCODE xxxxxx\r\n\r\n"
解释说明:
"/phone-post-code-weeather"此部分对应于 path格式
"Host:ali-weather.showapi.com"此部分对应于 接口域名
"phone_code" 表示城市编号021为上海(记住后面要空格)
"xxxxxx" 为你购买的APPCODE 这我就不填。。。
![这里写图片描述](http://img.blog.csdn.net/20170815164731926?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQ29taW5nRmx5aW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
相关代码: