libcurl的Expect100-continue 问题解决 php,c,C++

在使用curl做POST的时候, 当要POST的数据大于1024字节的时候, curl并不会直接就发起POST请求, 而是会分为俩步,

  1.  发送一个请求, 包含一个Expect:100-continue, 询问Server使用愿意接受数据
  2.  接收到Server返回的100-continue应答以后, 才把数据POST给Server

这是libcurl的行为.

具体的RFC相关描述: http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html#sec8.2.3

Host: kimnote.com
Accept: */*
Content-Length: 50
Content-Type: application/x-www-form-urlencoded
Expect: 100-continue

要解决的办法也挺容易:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));

C & c++ 语言的解决办法如下:

    struct curl_slist * headers = 0;
             // Disable "Expect: 100-continue"
    headers = curl_slist_append(headers, "Expect:");
    curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
    curl_slist_free_all(headers);

http://curl.haxx.se/libcurl/c/curl_easy_setopt.html#CURLOPTHTTPHEADER

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>