2016-03-04 2 views
0

Я пытаюсь взаимодействовать с API-интерфейсом Amazon Cloud Backup RESTful. И чтобы удалить файл на стороне сервера, мне нужно использовать запрос PUT.отправка запроса PUT с использованием libcURL без данных

Ниже сценариев оболочки хорошо работает:

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);