日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

iOS 中的网络请求 (同步请求、异步请求、GET请求、POST请求)

發布時間:2023/11/27 生活经验 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS 中的网络请求 (同步请求、异步请求、GET请求、POST请求) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、同步請求可以從因特網請求數據,一旦發送同步請求,程序將停止用戶交互,直至服務器返回數據完成,才可以進行下一步操作,

2、異步請求不會阻塞主線程,而會建立一個新的線程來操作,用戶發出異步請求后,依然可以對UI進行操作,程序可以繼續運行

3、GET請求,將參數直接寫在訪問路徑上。操作簡單,不過容易被外界看到,安全性不高,地址最多255字節;

4、POST請求,將參數放到body里面。POST請求操作相對復雜,需要將參數和地址分開,不過安全性高,參數放在body里面,不易被捕獲。

5、同步和異步的區別在于連接方式不同:

?同步用:?

?NSData?* data = [NSURLConnection sendSynchronousRequest:request returningResponse:Nil?error:nil];

?

異步用:

?NSURLConnection?* connection = [[NSURLConnection?alloc]initWithRequest:request delegate:self];(需要在.h中指定代理)

?

6、同步GET請求

//第一步,創建URL NSURL * url = [[NSURL alloc]initWithString:@"http://e.hiphotos.baidu.com/image/w%3D1366%3Bcrop%3D0%2C0%2C1366%2C768/sign=66f9b9980ef431adbcd2473a7d0097cc/08f790529822720ed8bdbef079cb0a46f21fab4d.jpg"]; //第二步,通過URL創建request請求 NSURLRequest * request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:15]; //NSURLRequest初始化方法第一個參數:請求訪問路徑,第二個參數:緩存協議,第三個參數:網絡請求超時時間(秒) //  其中緩存協議是個枚舉類型包含: // //  NSURLRequestUseProtocolCachePolicy(基礎策略) // //  NSURLRequestReloadIgnoringLocalCacheData(忽略本地緩存) // //  NSURLRequestReturnCacheDataElseLoad(首先使用緩存,如果沒有本地緩存,才從原地址下載) // //  NSURLRequestReturnCacheDataDontLoad(使用本地緩存,從不下載,如果本地沒有緩存,則請求失敗,此策略多用于離線操作) // //  NSURLRequestReloadIgnoringLocalAndRemoteCacheData(無視任何緩存策略,無論是本地的還是遠程的,總是從原地址重新下載) // //  NSURLRequestReloadRevalidatingCacheData(如果本地緩存是有效的則不下載,其他任何情況都從原地址重新下載) //第三步,連接服務器 NSURLResponse * respones = nil; NSError * error = nil; NSData * reviced = [NSURLConnection sendSynchronousRequest:request returningResponse:&respones  error:&error]; //第四步,將數據轉換成圖片 UIImage * image = [[UIImage alloc]initWithData:reviced]; _imageView.image = image;

?

7.異步GET請求

//第一步,創建URL NSURL * url = [[NSURL alloc]initWithString:@"http://e.hiphotos.baidu.com/image/w%3D1366%3Bcrop%3D0%2C0%2C1366%2C768/sign=66f9b9980ef431adbcd2473a7d0097cc/08f790529822720ed8bdbef079cb0a46f21fab4d.jpg"]; //第二步,通過URL創建request請求 NSURLRequest * request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:15]; //第三步,連接服務器 [NSURLConnection connectionWithRequest:request delegate:self];//(需要在.h中指定代理方法) 
//接受到服務器的回應調用 
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ [self.reviceData setLength:0 ]; } 
//數據傳輸中一直調用 
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ [self.reviceData appendData:data]; } 
//數據傳輸完才會調用 
- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ UIImage * image = [[UIImage alloc]initWithData:self.reviceData]; _imageView.image = image; }

?

8、同步POST請求

//第一步,創建URL NSURL * url = [[NSURL alloc]initWithString:@"http://api.hudong.com/iphonexml.do"]; 
//第二步,通過URL創建可變的request請求(只有創建可變的request才能設置POST請求) NSMutableURLRequest * request1 = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:100]; //timeoutInterval:post超時最大時間是240秒,在方法中設置多少秒也沒用。 //第三步,設置POST請求方式 [request1 setHTTPMethod:@"POST"]; 
//第四步,設置參數 NSString * bodyStr = @"type=focus-c"; NSData * body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding]; [request1 setHTTPBody:body]; 
//第五步,連接服務器 NSData * data = [NSURLConnection sendSynchronousRequest:request1 returningResponse:nil error:nil]; NSString * str = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; NSLog(@"%@",str);

?

9、異步POST請求

//第一步,創建URL NSURL * url = [[NSURL alloc]initWithString:@"http://api.hudong.com/iphonexml.do"]; 
//第二步,通過URL創建可變的request請求(只有創建可變的request才能設置POST請求) NSMutableURLRequest * request1 = [[NSMutableURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:100]; //timeoutInterval:post超時最大時間是240秒,在方法中設置多少秒也沒用。 //第三步,設置POST請求方式 [request1 setHTTPMethod:@"POST"]; 
//第四步,設置參數 NSString * bodyStr = @"type=focus-c"; NSData * body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding]; [request1 setHTTPBody:body]; 
//第五步,連接服務器 
[[NSURLConnection alloc]initWithRequest:request2 delegate:self] //接受到服務器的回應調用 
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ [self.reviceData setLength:0 ]; } 
//數據傳輸中一直調用 
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ [self.reviceData appendData:data]; } 
//數據傳輸完才會調用 
- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ NSString * str = [[NSString alloc]initWithData:self.reviceData encoding:NSUTF8StringEncoding]; NSLog(@"%@",str); 
}

?

轉載于:https://www.cnblogs.com/onecrow/articles/5054928.html

總結

以上是生活随笔為你收集整理的iOS 中的网络请求 (同步请求、异步请求、GET请求、POST请求)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。