正文
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <errno.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/udp.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
#include "cJSON.h"
#define PORT 80
#define IPADDR "116.62.81.138"
#define KEY "SNGgI2upxur590NHn"
#define LOCAL "beijing"
int main(int argc, char const *argv[])
{
int tcp_socket = socket(AF_INET, SOCK_STREAM, 0);
if (tcp_socket == -1)
{
fprintf(stderr, "tcp socket error,errno:%d,%s\n", errno, strerror(errno));
exit(1);
}
struct sockaddr_in dest_addr;
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(PORT);
dest_addr.sin_addr.s_addr = inet_addr(IPADDR);
int ret = connect(tcp_socket, (struct sockaddr *)&dest_addr, sizeof(dest_addr));
if (ret < 0)
{
fprintf(stderr, "connect error,errno:%d,%s\n", errno, strerror(errno));
exit(1);
}
char reqbuf[1024] = {0};
sprintf(reqbuf, "GET https://api.seniverse.com/v3/weather/now.json?key=%s&location=%s&language=en&unit=c "
"HTTP/1.1"
"\r\n"
"Host:api.seniverse.com\r\n"
"\r\n",
KEY, LOCAL);
send(tcp_socket, reqbuf, strlen(reqbuf), 0);
char recvbuf[1024] = {0};
recv(tcp_socket, recvbuf, sizeof(recvbuf), 0);
printf("%s", recvbuf);
bzero(recvbuf, 1024);
recv(tcp_socket, recvbuf, sizeof(recvbuf), 0);
printf("%s\n", recvbuf);
cJSON *obj = cJSON_Parse(recvbuf);
printf("%s\n", cJSON_Print(obj));
cJSON *results = NULL;
results = cJSON_GetObjectItem(obj, "results");
printf("array size = %d\n", cJSON_GetArraySize(results));
cJSON *result = NULL;
cJSON_ArrayForEach(result, results)
{
cJSON *now = cJSON_GetObjectItem(result, "now");
cJSON *temperature = cJSON_GetObjectItem(now, "temperature");
printf("temperature : %s\n", temperature->valuestring);
printf("temperature : %d\n", atoi(temperature->valuestring));
}
return 0;
}
复制