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

iPhone应用程序 HTTPS服务器连接教程,第1张

概述转自:http://mobile.51cto.com/iphone-278138.htm iPhone应用程序 HTTPS服务器连接教程是我们要一起来学习的内容。你是否也想让自己的iPhone 应用程序连接 https 服务器呢?下面我就介绍一下其使用方法。 通常使用 Objective-C 的 NSURLConnection 连接有证明书的 https 服务器时会出现验证错误,我们可以使用私有A

转自:http://mobile.51cto.com/iphone-278138.htm


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

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

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

准备

编译 openssl

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

  libcrypto.a      libssl.a   

编译 libcurl 

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

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

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

SSL support:     enabled (OpenSSL)   

接下来

make      make install   

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

使用

添加到工程中,如图:

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

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

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

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

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

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

#import "AppDelegate.h"      #include <curl/curl.h>     @implementation AppDelegate      -(voID)applicationDIDFinishLaunching:(UIApplication *)application {          window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];          // OverrIDe point for customization after application launch          [window makeKeyAndVisible];          CURL *curl;          CURLcode res;          curl = curl_easy_init();          if (curl) {              curl_easy_setopt(curl, CURLOPT_URL, "https://twitter.com/");              curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);                   res = curl_easy_perform(curl);              if (0 != res) {                  fprintf(stderr, "curl error: %d\n", res);              }              curl_easy_cleanup(curl);          }      }      -(voID)dealloc {          [window release];          [super dealloc];      }      @end   

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


 
在模拟器中使用 libcurl

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

libcrypto_simulator.a      libssl_simulator.a      libcurl_simulator.a   

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

总结

以上是内存溢出为你收集整理的iPhone应用程序 HTTPS服务器连接教程全部内容,希望文章能够帮你解决iPhone应用程序 HTTPS服务器连接教程所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1059936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存