色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 發(fā)送http請求 json

林子帆2年前10瀏覽0評論

c語言作為一門常見的編程語言,也常被用于發(fā)送http請求并處理json數(shù)據(jù)。在網(wǎng)絡(luò)編程中,發(fā)送http請求是非常重要的一環(huán),而json是一種輕量級的數(shù)據(jù)交換格式,因此c語言支持發(fā)送http請求和處理json數(shù)據(jù)的能力也是很必要的。

發(fā)送http請求可以使用c語言的socket編程、curl庫等方式。在使用socket編程時,需要連接服務(wù)器并發(fā)送http請求。比如以下代碼可以發(fā)送一個GET請求,獲取百度的首頁,并將返回的結(jié)果打印出來。

#include<stdio.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<unistd.h>
int main(){
int sock_desc;
struct sockaddr_in serv_addr;
char msg[] = "GET / HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n";
char buffer[4096];
sock_desc = socket(AF_INET , SOCK_STREAM , 0);
if (sock_desc == -1){
printf("could not create socket");
}
serv_addr.sin_addr.s_addr = inet_addr("220.181.57.216");
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons( 80 );
if (connect(sock_desc , (struct sockaddr *)&serv_addr , sizeof(serv_addr))< 0){
puts("connect error");
}
if(send(sock_desc, msg, strlen(msg) , 0)< 0){
puts("Send failed");
return 1;
}
if(recv(sock_desc, buffer, 4096, 0)< 0){
puts("recv failed");
}
printf("%s", buffer);
close(sock_desc);
return 0;
}

當(dāng)我們想要處理返回的數(shù)據(jù)時,一般會使用json格式的數(shù)據(jù)。c語言中的處理json數(shù)據(jù)可以使用第三方庫,比如json-c庫、cJSON庫等等。這里我們以cJSON庫為例。比如以下代碼可以解析一個json格式的字符串,并逐個打印其中的值。

#include <cJSON.h>
#include <stdio.h>
int main(){
const char* json_string = "{\"name\":\"Tom\",\"age\":22,\"favorites\":[\"reading\",\"music\",\"running\"]}";
cJSON* json = cJSON_Parse(json_string);
if (json == NULL){
printf("json格式錯誤\n");
return 1;
}
printf("name: %s\n", cJSON_GetObjectItem(json, "name")->valuestring);
printf("age: %d\n", cJSON_GetObjectItem(json, "age")->valueint);
cJSON* favorites_array = cJSON_GetObjectItem(json, "favorites");
printf("favorites:\n");
int favorites_array_size = cJSON_GetArraySize(favorites_array);
for (int i = 0; i< favorites_array_size; i++)
{
printf("%s\n", cJSON_GetArrayItem(favorites_array, i)->valuestring);
}
cJSON_Delete(json);
return 0;
}