在C語言中,我們可以使用HTTP發送請求并獲取返回值,其中常用的數據格式之一就是JSON。在HTTP請求中,我們需要攜帶一些參數以獲取需要的JSON數據。
首先,我們需要定義一個JSON格式的請求參數,通常可以使用庫文件來簡化操作,例如cJSON庫。
//創建JSON格式的字符串 cJSON *root = cJSON_CreateObject(); cJSON_AddStringToObject(root, "name", "張三"); cJSON_AddNumberToObject(root, "age", 18); char *json = cJSON_Print(root); cJSON_Delete(root); //將創建的JSON格式的字符串作為請求參數 char *params = (char*)malloc(strlen(json)+100); sprintf(params, "param=%s", json); free(json);
其中,cJSON_CreateObject()用于創建一個JSON對象,cJSON_AddStringToObject()和cJSON_AddNumberToObject()用于添加字符串和數字類型的鍵值對。最后,使用cJSON_Print()將JSON對象轉換為JSON格式的字符串。需要注意的是,使用完cJSON對象后需要使用cJSON_Delete()釋放內存。
接著,我們需要使用socket庫來實現HTTP請求的發送與接收,使用send()函數發送請求,使用recv()函數接收返回值。
int sock = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in serveraddr; serveraddr.sin_family = AF_INET; serveraddr.sin_port = htons(80); inet_pton(AF_INET, "www.example.com", &(serveraddr.sin_addr)); connect(sock, (struct sockaddr*)&serveraddr, sizeof(serveraddr)); //發送GET請求 char *request = "GET /example.php HTTP/1.1\r\nHost: www.example.com\r\n\r\n"; send(sock, request, strlen(request), 0); //接收返回值 char buffer[1024]; int len = recv(sock, buffer, 1024, 0); buffer[len] = '\0'; printf("%s\n", buffer); close(sock);
以上代碼中,我們首先使用socket()函數創建一個套接字,接著設置服務器地址與端口號,使用connect()函數連接服務器。然后,構造請求報文并使用send()函數發送請求。最后,使用recv()函數接收服務器返回的消息,并使用printf()輸出結果。
至此,我們就可以使用cJSON庫和socket庫來進行HTTP請求并獲取JSON格式的返回值了。
上一篇html怎么注銷一段代碼
下一篇go解析json特殊字符