Tôi có ứng dụng nhận dữ liệu qua các yêu cầu HTTP POST. Tôi đang cố gắng sử dụng libcurl để mở yêu cầu cho ứng dụng này, gửi dữ liệu và nhận trả lời từ ứng dụng. Đây là mã tôi có cho đến nay:libcurl HTTPS POST gửi dữ liệu?
int main(void)
{
CURL *curl;
CURLcode res;
curl = curl_easy_init();
if(curl)
{
const int timeout = 30000;
char outputmessage[]="VGhpcyBpcyBqdXN0IGEgbWVzc2FnZSwgaXQncyBub3QgdGhlIHJlYWwgdGhpbmc=";
curl_easy_setopt(curl, CURLOPT_URL, "https://somehost.com/someapp");
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.5");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, outputmessage);
curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, strlen(outputmessage));
curl_easy_setopt(curl, CURLOPT_POST, 1L);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout/1000);
res = curl_easy_perform(curl);
if(CURLE_OK != res)
{
printf("Error: %s\n", strerror(res));
return 1;
}
// now what?
// cleanup when done
curl_easy_cleanup(curl);
}
return 0;
}
này về cơ bản kết nối đến máy chủ, tôi nhận được một OK trên curl_easy_perform()
. Tôi có thể thấy kết nối trên Wireshark.
Hai câu hỏi:
1) này đúng cách gửi dữ liệu thông qua một POST là, và
2) Làm thế nào để nhận được trả lời từ ứng dụng.
Tôi nghĩ tôi cần sử dụng curl_easy_recv()
nhưng tôi không thể thấy cách thực hiện. Bất kỳ mã mẫu nào đều được chào đón. Cảm ơn.
Dữ liệu được ứng dụng trả lại nằm ngay sau 200 OK. Tôi cần phải đọc tiêu đề để xem liệu yêu cầu có được chấp nhận hay không, nhưng sau đó là dữ liệu sau nó. Bất kỳ ý tưởng? Và không phải để tập tin nhưng để một char * –
Để biết thông tin, nó phải là một void * ptr, không phải là một char * ptr, nhưng tôi sẽ chỉnh sửa câu trả lời của tôi với mã tôi đang sử dụng để xử lý các phản ứng. – asc99c
OK, cảm ơn. Bây giờ tôi cần phải bắt đầu phân tích tất cả các thông tin. cảm ơn sự giúp đỡ –