2016-03-04 185 views
0

我試圖與Amazon Cloud Backup RESTful API接口。爲了刪除服務器端的文件,我需要使用PUT請求。使用不帶數據的libcURL發送PUT請求

下面shell腳本運行良好:

curl -v -X PUT https://cdws.us-east-1.amazonaws.com/drive/v1/trash/161kKftTTTuRee1hicOhAw --header "Authorization: Bearer Atza|IQEBLjAsAhQ5zx7pKp9PCgCy6T1JkQjHHOEzpwIUQM" 

但現在我想用libcurl的去實現它。以下是我的代碼:

int curlRequest(char *url, char *header){ 
    CURL *curl; 
    CURLcode res; 
    struct curl_slist *chunk=NULL; 
    curl_global_init(CURL_GLOBAL_DEFAULT); 
    curl=curl_easy_init(); 
    if(curl){ 
     chunk=curl_slist_append(chunk, header); 
     curl_easy_setopt(curl, CURLOPT_HTTPHEAD, chunk); 
     curl_easy_setopt(curl, CURLOPT_PUT, 1L); 
     curl_easy_setopt(curl, CURLOPT_URL, url); 
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L); 
     curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L); 
     curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L); 
     res=curl_easy_perform(curl); 
     curl_easy_cleanup(curl); 
     curl_slist_free_all(chunk); 
    } 
    Return 0; 
} 

然後我得到的答覆如下,並計劃繼續等待:

< HTTP/1.1 100 Continue 

我知道,如果我使用PUT方法上傳文件,我需要使用CURLOPT_READFUNCTION。但實際上我不需要上傳任何數據。我該如何解決這個問題?

+1

運行帶有'--libcurl code.c'您的命令行,你會得到正是出於這個操作完成的代碼模板... –

+0

@DanielStenberg謝謝。有用。 –

回答

1

我有這個相同的問題。您需要使用此:

curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT"); 

代替:

curl_easy_setopt(curl, CURLOPT_PUT, 1L); 
相關問題