通常在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 收到響應時,...