欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c http發送json數據

吉茹定2年前8瀏覽0評論

在使用C語言進行網絡編程時,我們通常需要使用HTTP協議進行數據傳輸。其中,發送JSON數據也是非常常見的操作。本文將介紹C語言如何發送JSON數據。

首先,我們需要使用socket庫建立與服務器的連接。然后發送HTTP請求。在發送JSON數據之前,我們需要設置請求頭部,指定數據的類型、長度等相關信息。

char *json = "{\"name\":\"Tom\", \"age\":20}";
char *host = "example.com";
char *path = "/api/user";
char *content_type = "Content-Type: application/json\r\n";
char *content_length = "Content-Length: ";
char length[10];
int sockfd;
struct sockaddr_in servaddr;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(80);
inet_pton(AF_INET, host, &servaddr.sin_addr);
connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));
// 發送HTTP請求
char request[500];
sprintf(request, "POST %s HTTP/1.1\r\nHost:%s\r\n%s%s%d\r\n\r\n%s", path, host, content_type, content_length, (int)strlen(json), json);
write(sockfd, request, strlen(request));

以上代碼實現了與服務器建立連接,并發送了POST請求。其中,Content-Type指定了數據的類型為JSON,Content-Length指定了數據的長度。

接下來,我們需要等待服務器的響應。服務器響應后,我們可以讀取響應頭部并解析響應狀態碼。如果狀態碼表明請求成功,那么我們可以讀取響應體中的數據。

char recvline[4096];
int n;
while ((n = read(sockfd, recvline, 4096)) >0) {
if (strstr(recvline, "\r\n\r\n")) {
break;
}
}
// 解析響應頭部
char *body = strstr(recvline, "\r\n\r\n") + 4;
int body_len = n - (body - recvline);
if (strstr(recvline, "200 OK")) {
printf("Server returned: %.*s\n", body_len, body);
} else {
printf("Server returned an error\n");
}
close(sockfd);

以上代碼實現了讀取服務器響應,并解析響應頭部。如果服務器響應狀態碼為200,則說明請求成功并打印響應體中的內容。

總的來說,C語言發送JSON數據的過程就是建立連接、發送HTTP請求、等待服務器響應并解析響應頭部的流程。我們只需要設置好請求頭部、請求體中的JSON數據格式以及解析響應數據即可完成該操作。