iOS ASIHTTPRequest 請求https

來源:互聯網
上載者:User

標籤:des   code   http   c   strong   com   

iOS 終端請求服務端資料時,為了保證資料安全,我們一般會使用https協議加密,而對於iOS的網路編程,我們一般會使用開源架構:ASIHTTPRequest,但是如果使用傳統的http方式,即使忽略驗證的話,程式也會報[error-9844]的錯誤,具體錯誤如下描述:

Error Domain=ASIHTTPRequestErrorDomain Code=1 "A connection failure occurred" UserInfo=0x6aafa30 {NSUnderlyingError=0x6a3fd90 "The operation couldn’t be completed. (OSStatus error -9844.)", NSLocalizedDescription=A connection failure occurred}

那麼該如何解決該問題呢?經過尋找解決方案如下:

解決方案1

1)      [request setValidatesSecureCertificate:NO];

2)      在ASIHTTPRequest.m檔案中尋找”https”,向sslProperties字典中增加kCFStreamSSLLevel對象,網上的參考方法: 

[sslProperties setObject:(NSString *)(CFStringRef*)kCFStreamSocketSecurityLevelSSLv3 forKey:(NSString*)kCFStreamSSLLevel];

但是,sslProperties字典並非可變字典,所以你需要將sslProperties修改為可變字典NSMutableDictionary。

解決方案2

如果需要更加靈活的對SSL security level進行設定,可以將CFStringRef*sslSecurityLevel作為變數提到ASIHTTPRequest.h檔案的property中,具體操作如下:

1)      在ASIHTTPRequest.h的檔案中添加聲明:

CFStringRef *sslSecurityLevel;

2)      在ASIHTTPRequest.h的檔案中添加CFStringRef屬性:

@property (assign) CFStringRef *sslSecurityLevel;

3)      在ASIHTTPRequest.m的檔案中添加CFStringRef屬性:

@synthesize sslSecurityLevel;

4)      在ASIHTTPRequest.m的檔案修改:

NSDictionary *sslProperties = [[NSDictionary alloc]initWithObjectsAndKeys:??,將不可變字典更改為可變字典(NSMutableDictionary),即:

NSMutableDictionary *sslProperties = [[NSMutableDictionary alloc]initWithObjectsAndKeys:??

5)      在4)修改語句結束的地方添加設定SSL security level的代碼:

            // Use requested SSL security level

            if ([self sslSecurityLevel] != nil) {

                [sslProperties setObject:(NSString *)[self sslSecurityLevel] forKey:(NSString *)kCFStreamSSLLevel];

            }

6)      在調用請求的request中做如下設定:

    [request setValidatesSecureCertificate:NO];

    [request setSslSecurityLevel:(CFStringRef*)kCFStreamSocketSecurityLevelSSLv3];

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.