cURL请求已更改

时间:2011-11-23 09:23:30

标签: c++ curl http-headers

我开始使用cURL库,在编译库之前。我发送请求并有一些问题。用于cURL的c ++代码:

CURL *curl=NULL;
CURLcode res;
struct curl_slist *headers=NULL; // init to NULL is important 
 curl_slist_append(headers, "POST /oauth/authorize HTTP/1.1");
 curl_slist_append(headers, "Host: sp-money.yandex.ru");
 curl_slist_append(headers, "Content-Type: application/x-www-form-urlencoded");
 curl_slist_append(headers, "charset: UTF-8");
 curl_slist_append(headers, "Content-Length: 12345");
curl = curl_easy_init();
if(!curl) 
    return 0;
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(curl, CURLOPT_URL, "sp-money.yandex.ru");
curl_easy_setopt(curl, CURLOPT_PROXY, "127.0.0.1:8888");
if( curl_easy_perform(curl)!=CURLE_OK)
    return 1;

我使用了proxy,fiddler2来检查发送给服务器的数据。当我检查发送的数据 我得到结果:

POST HTTP://sp-money.yandex.ru/ HTTP/1.1
Host: sp-money.yandex.ru
Accept: */*
Connection: Keep-Alive
Content-Length: 151
Content-Type: application/x-www-form-urlencoded

我也使用Wiresharck检查这些数据,结果相同。

你知道为什么在第一行cURL写道:

POST HTTP://sp-money.yandex.ru/ HTTP/1.1

我发送

POST /oauth/authorize HTTP/1.1

我使用VS 2010工作,而且我没有使用框架

2 个答案:

答案 0 :(得分:1)

POST /oauth/authorize HTTP/1.1不是标题,是带有网址和版本的HTTP动词(POST)。

我想你需要把它放在其他地方(现在看第二篇文档)

答案 1 :(得分:1)

POST行不属于标题,应使用CURLOPT_URLCURLOPT_POST设置,以及类似协议的设置。实际上,Host:标题也是如此,它是从URL推断的。