iPhone应用程序 HTTPS服务器连接教程

移动开发 iOS
本文介绍的是iPhone应用程序 HTTPS服务器连接教程,很详细的讲解了服务器的链接,具体内容我们看正文。

iPhone应用程序 HTTPS服务器连接教程是我们要一起来学习的内容。你是否也想让自己的 iPhone 应用程序连接 https 服务器呢?下面我就介绍一下其使用方法。

通常使用 Objective-C 的 NSURLConnection 连接有证明书的 https 服务器时会出现验证错误,我们可以使用私有API — setAllowsAnyHTTPSCertificate:forHost 来解决这个问题。如果是 Cocoa 的应用程序应该是没有什么问题,但是用在 iPhone 上,很可能过不了 App Store 的审查。

所以这里我们使用 libcurl 来完成在 iphone 上连接 https 服务器。

准备

编译 openssl

连接 https 的前提是要有 OpenSSL。你可以参考 这里 来为 iPhone 编译 OpenSSL 静态库。最终得到下面两个静态库文件。 

  1. libcrypto.a  
  2. libssl.a 

编译 libcurl 

接下来我们下载/编译 libcurl。下载展开后,按照下面配置(根据实际情况更改你的SDK目录,版本)。

  1. ./configure --prefix=$HOME/tmp/iphonelib/curl \  
  2.     --host=arm-apple-darwin --disable-shared --with-random=/dev/urandom \  
  3.     CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc \  
  4.     CFLAGS="-arch armv6 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
  5. iPhoneOS3.0.sdk -I$HOME/tmp/iphonelib/openssl/include -L$HOME/tmp/iphonelib/openssl/lib" \  
  6.     CPP=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/cpp \  
  7.     AR=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar 

如果***输出下面的内容,说明可以编译支持 https 的 libcurl 了。

  1. SSL support:     enabled (OpenSSL) 

接下来

  1. make  
  2. make install 

编译结果输出到 ~/tmp/iphonelib/curl/lib 下的 libcurl.a。

使用

添加到工程中,如图:

iPhone应用程序 HTTPS服务器连接教程

如下图所示,将编译好的静态库拖到你的工程中:

另外,由于 openssl 中使用了 zlib,所以还需要在工程中加入链接开关。(该库被包含在iPhone中,不需要重新编译)

如下图所示,在连接中追加 -lz。如图:

iPhone应用程序 HTTPS服务器连接教程

***,如下图添加编译所需的头文件路径。如图:

iPhone应用程序 HTTPS服务器连接教程

比如,编译 libcurl 时的头文件的路径 ~/tmp/iphonelib/curl/include 。

代码例子下来,让我们看看在程序中使用 libcurl 的例子。下面的例子在 AppDelegate.m 中实现。  

  1. #import "AppDelegate.h"  
  2. #include <curl/curl.h> 
  3. @implementation AppDelegate  
  4. -(void)applicationDidFinishLaunching:(UIApplication *)application {  
  5.     window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];  
  6.     // Override point for customization after application launch  
  7.     [window makeKeyAndVisible];  
  8.     CURL *curl;  
  9.     CURLcode res;  
  10.     curl = curl_easy_init();  
  11.     if (curl) {  
  12.         curl_easy_setopt(curl, CURLOPT_URL, "https://twitter.com/");  
  13.         curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);  
  14.  
  15.         res = curl_easy_perform(curl);  
  16.         if (0 != res) {  
  17.             fprintf(stderr, "curl error: %d\n", res);  
  18.         }  
  19.         curl_easy_cleanup(curl);  
  20.     }  
  21. }  
  22. -(void)dealloc {  
  23.     [window release];  
  24.     [super dealloc];  
  25. }  
  26. @end 

编译运行,可以用调试工具得到取得的html,如下图。

iPhone应用程序 HTTPS服务器连接教程
 
在模拟器中使用 libcurl

上面介绍的都是在设备上运行的例子,如果要在模拟器上使用,由于处理器结构不一样,需要重新编译 openssl 和 curl 静态库。编译的时候,只要将 SDK 的路径由 iPhoneOS.platform ⇒ iPhoneSimulator.platform,编译开关 -arch armv6 ⇒ -arch i386 就可以了。只是编译的文件名***和iphone上用的区别开来,如下所示:

  1. libcrypto_simulator.a  
  2. libssl_simulator.a  
  3. libcurl_simulator.a 

又或者不改变库的名称,而是增加新的编译目标。

小结:iPhone应用程序 HTTPS服务器连接教程的内容介绍我那了,希望本文对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-07-26 16:43:59

iPhone Web 服务器

2017-11-10 08:58:49

Web服务器应用程序

2009-06-25 17:08:14

2010-04-16 13:32:28

Win2008 R2

2011-09-06 10:58:10

服务器应用程序虚拟化

2011-07-21 10:47:37

iPhone Cocoa 委托

2009-06-01 11:37:46

EquinoxOSGi服务器

2024-02-02 09:28:21

FrankenPHP应用

2018-03-12 09:13:12

应用程序服务器部署

2009-11-18 09:48:38

Windows PHP

2011-11-16 11:30:08

虚拟化虚拟服务器虚拟服务器备份

2019-05-14 09:39:07

Web服务器Web容器应用程序服务器

2018-11-23 08:54:27

服务器程序监控

2013-12-11 09:56:10

存储加速器

2011-07-20 15:58:58

iPhone 应用程序 生命周期

2011-07-26 09:41:23

iPhone xcode Mac OS X

2010-08-27 10:41:41

iPhone核心应用程序

2011-07-19 14:36:32

iPhone

2011-08-05 13:49:53

iPhone 应用 开发

2011-08-12 14:54:45

iPhone委托
点赞
收藏

51CTO技术栈公众号