2012-03-28 19 views
1
static size_t write_callback(void *ptr, size_t size, size_t nmemb, void *userp) 
    { 
     int totalSize = size*nmemb; 
     if(totalSize > 1) 
     { 
      strncpy((char*)userp,(char*)ptr,totalSize); 
     } 
     return totalSize; 
    } 

curl_easy_setopt(curl, CURLOPT_HEADER, 1L); 
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &this->responseData); 
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION ,write_callback); 

write_callback関数でヘッダ応答と本文を取得する方法は?POSTリクエスト後にカールを使用してHTTP応答ヘッダと本文を取得する方法

このフォームのように印刷する必要があります。

応答ヘッダー:200 本文:エラー - 大きすぎます。

答えて

3

curl_easy_setopt(curl, CURLOPT_HEADER, 1)を使用すると、応答ヘッダーを取得できます。

しかしwrite_callbackはこれをしようと何度も

と呼ばれることもあります。

curl_test.c

#include <stdio.h> 
#include <curl/curl.h> 
#include <stdlib.h> 
#include <unistd.h> 

size_t write_func(void *ptr, size_t size, size_t nmemb, void *userdata) 
{ 
     //write(STDOUT_FILENO, ptr, size*nmemb); 
     printf("write_func\n"); 
     return size * nmemb; 
} 

int main(int argv, char *argc[]) 
{ 
     CURL *curl; 
     if (argv != 2) { 
       return 0; 
     } 
     curl = curl_easy_init(); 
     if (!curl) { 
       fprintf(stderr, "curl_easy_init error"); 
     } 
     curl_easy_setopt(curl, CURLOPT_URL, argc[1]); 
     curl_easy_setopt(curl, CURLOPT_HEADER, 1); 
     curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_func); 
     curl_easy_perform(curl); 
     curl_easy_cleanup(curl); 
     return 0; 
} 

CMD:

gcc curl_test.c -o curl_test -lcurl && ./curl_test www.google.com 
関連する問題