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 头信息
-
/* 添加头信息 */
-
struct curl_slist *list = NULL;
-
list = curl_slist_append(list, "Expect: ");
-
-
/* 设置头信息 */
-
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, list);
-
…
-
curl_slist_free_all(list); /* 释放头信息 */
添加这段代码后,再次请求,时间降到0.x秒内,速度正常
Popularity: 9% [?]
Random Posts
August 23, 2016 | Filed Under C/C++