使用没有数据的 libcURL 发送 PUT 请求
sending PUT request using libcURL without data
我正在尝试连接 Amazon Cloud Backup RESTful API。为了在服务器端删除文件,我需要使用 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。但实际上我不需要上传任何数据。我该如何解决这个问题?
我遇到了同样的问题。你需要使用这个:
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
而不是:
curl_easy_setopt(curl, CURLOPT_PUT, 1L);
我正在尝试连接 Amazon Cloud Backup RESTful API。为了在服务器端删除文件,我需要使用 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。但实际上我不需要上传任何数据。我该如何解决这个问题?
我遇到了同样的问题。你需要使用这个:
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
而不是:
curl_easy_setopt(curl, CURLOPT_PUT, 1L);