libcurl请求速度慢问题解决

一直使用libcurl请求接口数据,最近发现一个问题,post部分请求速度变慢,每次都要超过一秒,get速度没有变化,0.1秒左右获取完毕。
对POST请求打开VERBOSE开关,看到发出请求头信息包含 Expect: 100-Continue, 网上查找对应说明,当POST数据大于1024字节时,
有这个头信息会先等待服务端一个继续接受的应答才继续上传,如果服务端没有应答会等待1秒再继续上传后续数据,对照VERBOSE输出的信息,
发现发出的Content-Length 大小1026字节,刚好超出1024字节,服务端没有对100-Continue做应答于是libcurl多等了1秒才发送数据。
修改方法,让libcurl不处理Expect 头信息

  1.   /* 添加头信息 */
  2.   struct curl_slist *list = NULL;
  3.   list = curl_slist_append(list, "Expect: ");
  4.  
  5.  /* 设置头信息 */
  6.   curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
  7.   …
  8.   curl_slist_free_all(list); /* 释放头信息 */

添加这段代码后,再次请求,时间降到0.x秒内,速度正常

Popularity: 9% [?]

Random Posts

Comments

Comments are closed.