NSURLConnection同步,非同步與SSL

2021-06-19 16:25:32 字數 1860 閱讀 6574

通常在iphone裡用網路訪問會用到nsurlconnection來做url鏈結請求,下面簡單介紹一下:

1、同步請求

nsurl *url=[[nsurl

alloc]initwithstring:urlstring];

nsmutableurlrequest*request=[[nsmutableurlrequest

alloc

]init];

nserror *err=nil;

nsdata

*data=[

nsurlconnection

sendsynchronousrequest:request

returningresponse:

nil

error:&err];

if(data==nil)

else

這種情況,通過乙個靜態方法,請求request,這種情況下,會一直阻塞,等到返回結果,簡單易用

2、非同步請求

nsurl *url=[[nsurl

alloc]initwithstring:urlstring];

nsmutableurlrequest*request=[[nsmutableurlrequest

alloc

]init

];nsurlconnection *connection = [[nsurlconnection

alloc] initwithrequest:requestdelegate:self];

[url release];

[request release];

if(connection)

else

基本上要實現下面節歌方法

- (void)connection:(nsurlconnection *)connection didreceiveresponse:(nsurlresponse*)response 

- (void)connection:(nsurlconnection *)connection didreceivedata:(nsdata *)data

- (void)connectiondidfinishloading:(nsurlconnection *)connection 

-(void)connection:(nsurlconnection *)connection didfailwitherror:(nserror *)error

基本上這樣就搞定了!!!

但是非同步模式下帶來了乙個新的問題,很多情況下,網路請求不在主線程,或者介面等待網路結果,不在主線程的時候,呼叫執行緒如果生命週期over,下面這些可能都沒有呼叫到,導致得不到想要得效果,所以需要在nsurlconnection請求後面加點東西來阻塞

while

(!finished)

- (bool)connection:(nsurlconnection *)connection canauthenticateagainstprotectionspace:(nsurlprotectionspace *)protectionspace 

- (void)connection:(nsurlconnection *)connection didreceiveauthenticationchallenge:(nsurlauthenticationchallenge *)challenge 

第乙個方法會根據你的url來判斷是否需要做認證

第二個方法是認證的過程,if ([trustedhosts containsobject:challenge.protectionspace.host]),這行**注釋掉,就可以自動所有ssl通過,否則,你可以加一些trust的hosts,其他的不通過就行了!!!

網路請求 NSURLConnection

http和https http協議,hyper transfer protocol 超文字傳輸協議 是用於全球資訊網 www 伺服器傳送超文字到本地瀏覽器的傳輸協議,http是乙個應用層協議,由請求和響應構成,是乙個標準的客戶端伺服器模型.工作原理 http協議採用請求 響應模型.客戶端向伺服器傳送...

NSURLConnection 非同步請求

匯入第三方庫svprogresshud import viewcontroller.h import svprogresshud.h import mjrefresh.h inte ce viewcontroller property retain nsmutablearray datasource...

NSURLConnection同步與非同步請求

非同步請求 nsmutabledata buf nsmutabledata alloc initwithlength 0 nsurlconnection connection nsurlconnection alloc initwithrequest req delegate self 收到響應時,...