2011-04-29 45 views
1

我想用libcurl c api發佈一些東西到網站上。當我從瀏覽器訪問網址時,該網址起作用。我從瀏覽器欄中複製相同的內容並在程序中訪問它。程序在curl_easy_perform調用中掛起,並且永遠不會返回。我還提供了一個write_callback,但它永遠不會被調用。 這段代碼下面有什麼問題curl不工作時粘貼在瀏覽器地址欄中工作的相同的網址

爲了保護隱私,我從下面的代碼片段中刪除了url。

int main(void) 
{ 
    CURLcode res; 

    CURL *curl = curl_easy_init(); 
    if(curl) { 
     curl_easy_setopt(curl, CURLOPT_URL, ""); 
     curl_easy_setopt(curl, CURLOPT_POST, 1); 
     //curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 1L); 
     //curl_easy_setopt(curl, CURLOPT_TIMEOUT, 1L); 
     curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback); 
     res = curl_easy_perform(curl); 
     if (res != CURLE_OK) fprintf(stderr,"failed: %s", curl_easy_strerror(res)); 
     curl_easy_cleanup(curl); 
    } 
    return -1; 
} 
+1

逃避你的後場鍵/值也許您正試圖獲取該網站上的一些限制(例如:UA,Referrer) – wong2 2011-04-29 05:00:03

+0

您是否嘗試過使用更普遍可用的網站來運行此操作?我用http://google.com運行了您的示例,並且它工作得很好。當然,我只是打印出傳遞給write_callback的size/nmemb值,所以不可能判斷回調函數是否有問題。 – unpythonic 2011-04-29 05:26:33

回答

0

你可能需要設置CURLOPT_POSTFIELDSCURLOPT_POSTFIELDSIZE爲好。

所以,如果您的文章看起來像http://awesome.com/superpost.html?blah=hi

捲曲網站上有一些體面的例子:

注意:您還需要與curl_escape

+0

非常感謝你解決了這個問題。 – 2011-04-29 06:41:29

+0

沒問題,那麼你可能想接受答案。 – 2011-04-29 17:28:28

相關問題