C語言是一種強大的編程語言,可以用來獲取網頁的json數據。在這篇文章中,我們將介紹如何使用c語言獲取網頁的json數據。
#include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netdb.h> int main(int argc, char **argv) { char *host = "example.com"; char *path = "/api/data.json"; struct hostent *server = gethostbyname(host); struct sockaddr_in server_address; bzero((char *) &server_address, sizeof(server_address)); server_address.sin_family = AF_INET; bcopy((char *) server->h_addr, (char *) &server_address.sin_addr.s_addr, server->h_length); server_address.sin_port = htons(80); int socket_fd = socket(AF_INET, SOCK_STREAM, 0); if (connect(socket_fd, (struct sockaddr *)&server_address, sizeof(server_address))< 0) { perror("connect"); return 1; } char request[1024]; sprintf(request, "GET %s HTTP/1.1\nHost: %s\n\n", path, host); if (send(socket_fd, request, strlen(request), 0)< 0) { perror("send"); return 1; } char buffer[1024]; char response[1024*1024]; int total_bytes = 0; while (1) { int bytes_read = recv(socket_fd, buffer, sizeof(buffer), 0); if (bytes_read<= 0) { break; } memcpy(response+total_bytes, buffer, bytes_read); total_bytes += bytes_read; } close(socket_fd); char *start = strstr(response, "\r\n\r\n") + 4; printf("%s\n", start); return 0; }
在上述代碼中,我們首先定義了一個用于獲取json數據的網站,然后通過gethostbyname函數獲取了服務器的網絡地址。接下來,我們建立了一個用于發送HTTP請求的TCP套接字,并連接到服務器。通過構造GET請求,我們向服務器發送請求,獲取json數據。最后,我們從接收的HTTP響應中提取json數據,并輸出到控制臺。