我开始使用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工作,而且我没有使用框架
答案 0 :(得分:1)
POST /oauth/authorize HTTP/1.1
不是标题,是带有网址和版本的HTTP动词(POST)。
我想你需要把它放在其他地方(现在看第二篇文档)
答案 1 :(得分:1)
POST
行不属于标题,应使用CURLOPT_URL
,CURLOPT_POST
设置,以及类似协议的设置。实际上,Host:
标题也是如此,它是从URL推断的。