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

c get發送json數據

林國瑞2年前7瀏覽0評論

C語言作為一門可以進行底層操作的編程語言,有時候需要與服務器進行數據交互來完成一些任務。其中,發送JSON數據是很常見的一種情況,接下來我們就來了解一下C語言如何使用GET請求發送JSON數據。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#define MAX_SIZE 2048
int main() {
// 創建socket套接字
int client_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (client_fd == -1) {
perror("socket創建失敗");
exit(1);
}
// 設置socket地址
struct sockaddr_in server_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(80);
server_addr.sin_addr.s_addr = inet_addr("服務器IP地址");
// 連接服務器
int conn = connect(client_fd, (struct sockaddr*)&server_addr, sizeof(server_addr));
if (conn == -1) {
perror("連接失敗");
close(client_fd);
exit(1);
}
// 設置HTTP GET請求的Header和Body
char header[MAX_SIZE], body[MAX_SIZE];
char *path = "/api/user_info";
sprintf(header, "GET %s HTTP/1.1\r\nHost: 服務器IP地址\r\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36\r\nAccept: */*\r\nContent-Type: application/json\r\nConnection: close\r\n\r\n", path);
sprintf(body, "{\"username\":\"username\",\"password\":\"password\"}");
// 發送請求頭和請求體
int len = strlen(header) + strlen(body);
char buf[MAX_SIZE];
strcpy(buf, header);
strcat(buf, body);
int send_len = send(client_fd, buf, len, 0);
if (send_len == -1) {
perror("發送失敗");
close(client_fd);
exit(1);
}
// 接收服務器響應
char recv_buf[MAX_SIZE];
int recv_len = recv(client_fd, recv_buf, MAX_SIZE, 0);
if (recv_len == -1) {
perror("接收失敗");
close(client_fd);
exit(1);
}
// 輸出響應
printf("%s", recv_buf);
// 關閉socket套接字
close(client_fd);
return 0;
}

上面這段代碼就可以實現C語言通過GET請求向服務器發送JSON數據的操作。由于GET請求沒有請求體,所以我們需要把JSON數據以字符串形式放入請求頭的后面。在這里,我們把請求路徑設置為了/api/user_info,Content-Type設置為了application/json。

接下來,我們通過socket套接字與服務器建立連接,將請求頭和請求體發送給服務器,并接收服務器響應。最后,我們將響應輸出即可。

總之,通過這篇文章,我們了解了C語言如何通過GET請求發送JSON數據。當我們在做一些底層操作的時候,這種方法可能會比較常見。如果在開發過程中遇到問題,可以查看錯誤提示來解決問題。