刚好工作上需要编写客户端的程序,原本封装好的http程序代码突然异常了,百思不得其解。
然后再http client的代码中打印可能出现的异常,终于在下面的代码中捕获出来。
res = curl_easy_perform( g_curl );
if (res == 0)
{
curl_easy_getinfo( g_curl, CURLINFO_RESPONSE_CODE, http_code);
}
else
{
curl_easy_strerror(res);
fprintf(stderr, "curl_easy_perform() failed: %s\n",
curl_easy_strerror(res));
}
return (0 == res) ? 0 : -1;
运行的时候,会打印 unsupported protocol 这样的信息,通过google 查到这个是因为我们在编译
libcurl库时没有添加对ssl的支持导致的,然后下载最新的openssl 库编译,然后在
Makefile中加上头文件路径和静态库路径:
头文件:
-I../../../third/ssl/include/ssl
库文件:
../../../third/ssl/lib/libssl.a \
../../../third/ssl/lib/libcrypto.a
然后在编译配置的时候,加上选项
./configure -with-ssl=/usr/local/lib
然后进行make,注意在编译最后的输出上有对各种协议的支持情况
可以看到,上面已经支持了SSL了。
原来以为可以很顺利的,结果编译的时候报一些*rtsp和*ldap相关的错误,然后google
发现,这个需要在curl 编译的时候禁用掉,然后到curl的目录下,重新配置编译配置
/configure -with-ssl=/usr/local/lib -without-librtmp -disable-rtsp -disable-ldap -disable-ldaps
OK,大功告成!