[转]使用libcurl连接https服务器
?
http://blog.csdn.net/xinghexiyue/article/details/6324915
问题
问题
你是否也想让自己的 iPhone 应用程序连接 https 服务器呢?下面我就介绍一下其使用方法。
通常使用 Objective-C 的 NSURLConnection 连接有证明书的 https 服务器时会出现验证错误,我们可以使用私有API — setAllowsAnyHTTPSCertificate:forHost 来解决这个问题。如果是 Cocoa 的应用程序应该是没有什么问题,但是用在 iPhone 上,很可能过不了 App Store 的审查。
所以这里我们使用 libcurl 来完成在 iphone 上连接 https 服务器。
准备编译 openssl
连接 https 的前提是要有 OpenSSL。你可以参考?这里?来为 iPhone 编译 OpenSSL 静态库。最终得到下面两个静态库文件。
接下来我们下载/编译?libcurl。下载展开后,按照下面配置(根据实际情况更改你的SDK目录,版本)。如下图所示,将编译好的静态库拖到你的工程中:?
![[转]运用libcurl连接https服务器](http://img.reader8.net/uploadfile/jiaocheng/2014017/1421/2014011402210018530.png)
另外,由于 openssl 中使用了 zlib,所以还需要在工程中加入链接开关。(该库被包含在iPhone中,不需要重新编译)
如下图所示,在连接中追加 -lz。
?
![[转]运用libcurl连接https服务器](http://img.reader8.net/uploadfile/jiaocheng/2014017/1421/2014011402210018531.jpg)
最后,如下图添加编译所需的头文件路径。
?
![[转]运用libcurl连接https服务器](http://img.reader8.net/uploadfile/jiaocheng/2014017/1421/2014011402210018532.jpg)
比如,编译 libcurl 时的头文件的路径 ~/tmp/iphonelib/curl/include 。
代码例子
下来,让我们看看在程序中使用 libcurl 的例子。下面的例子在 AppDelegate.m 中实现。
![[转]运用libcurl连接https服务器](http://img.reader8.net/uploadfile/jiaocheng/2014017/1421/2014011402210018533.jpg)
在模拟器中使用 libcurl
上面介绍的都是在设备上运行的例子,如果要在模拟器上使用,由于处理器结构不一样,需要重新编译 openssl 和 curl 静态库。
编译的时候,只要将 SDK 的路径由 iPhoneOS.platform ? iPhoneSimulator.platform,编译开关 -arch armv6 ? -arch i386 就可以了。
只是编译的文件名最好和iphone上用的区别开来,如下所示:
1 2 3
libcrypto_simulator.a libssl_simulator.a libcurl_simulator.a