iPhone應用程式 HTTPS伺服器連線教程

2021-06-06 00:52:12 字數 2758 閱讀 6301

**:

iphone應用程式https伺服器連線教程是我們要一起來學習的內容。你是否也想讓自己的iphone應用程式連線https 伺服器呢?下面我就介紹一下其使用方法。

通常使用 objective-c 的 nsurlconnection 連線有證明書的https 伺服器時會出現驗證錯誤,我們可以使用私有api — setallowsanyhttpscertificate:forhost 來解決這個問題。如果是 cocoa 的應用程式應該是沒有什麼問題,但是用在iphone所以這裡我們使用 libcurl 來完成在 iphone 上連線 https 伺服器。

準備

編譯 openssl

連線 https 的前提是要有 openssl。你可以參考 這裡 來為 iphone 編譯 openssl 靜態庫。最終得到下面兩個靜態庫檔案。 

libcrypto.a  

libssl.a 

編譯 libcurl

./configure 

--prefix

=$home/tmp/iphonelib/curl \  

--host

=arm

--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 。

#include 

<

curl

/curl.h

>

window

= [[uiwindow alloc] initwithframe:[[uiscreen mainscreen] bounds]];  

[window makekeyandvisible];  

curl *curl;  

curlcode res;  

curl

= curl_easy_init

();  

if (curl)   

curl_easy_cleanup(curl);  

}  }  

-(void)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應用程式委託

iphone的軟體棧有好幾層組成,而應用程式是位於棧裡面最高的抽象層,系統核心服務 作業系統層 則是位於最底層的。這中間還有 層 cocoatouch層 核心服務層等等 但一般在開發應用程式的過程中,與我們主要打交道的是gui框架和cocoatouch層所提供的物件導向抽象。cocoa的founda...

iphone應用程式結構

classes 源程式檔案 h m other sources main.m 等,不需要程式設計師修改 prefix.pch resources 介面檔案 xib 配置檔案 info.plist frameworks 鏈結的庫 targets 專案的不同target 資源 編譯配置不同 execut...

iPhone應用程式生命週期

int argc,char argv,nsstring principalclassname,nsstring delegateclassname 來獲取應用程式的控制代碼。2 從給定的應用程式委託類,初始化乙個應用程式委託。並把該委託設定為應用程式的委託,這裡就有如果傳入引數為nil,會呼叫函式訪...