国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

基本網絡請求

2019-11-14 18:43:49
字體:
來源:轉載
供稿:網友

一、同步GET

// 1.將網址初始化成一個OC字符串對象

NSString *urlStr = [NSString stringWithFormat:@"%@?wewe=%@", @"111", @"222"];

// 2.如果網址中存在中文,進行URLEncode
NSString *newUrlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 
// 3.構建網絡URL對象, NSURL
NSURL *url = [NSURL URLWithString:newUrlStr];
 
// 4.創建網絡請求
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
 
// 5.創建同步鏈接
NSURLResponse *response = nil;
NSError *error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
 
二、異步GET
 
前四步基本一樣

// 1.將網址初始化成一個OC字符串對象

NSString *urlStr = [NSString stringWithFormat:@"%@?wewe=%@", @"111", @"222"];

// 2.如果網址中存在中文,進行URLEncode
NSString *newUrlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 
// 3.構建網絡URL對象, NSURL
NSURL *url = [NSURL URLWithString:newUrlStr];
 
// 4.創建網絡請求
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:10];
 
不同的是在這里我們創建的是異步請求鏈接
 
// 異步鏈接(形式1,較少用)
[NSURLConnection sendAsynchronousRequest:requst queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
      //your code
    }]
 
一般的,當創建異步連接時, 很少用到第一種方式,經常使用的是代理方法。
// 異步連接(形式2)
 
[NSURLConnection connectionWithRequest:request delegate:self];
 
關于NSURLConnectionDataDelegate,我們經常使用的協議方法為一下幾個:
 
// 服務器接收到請求時
- (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
{
    NSLog(@"%@", error);
}
 
三、同步POST
 

// 1.將網址初始化成一個OC字符串對象

NSString *urlStr = [NSString stringWithFormat:@"%@?wewe=%@", @"111", @"222"];

// 2.如果網址中存在中文,進行URLEncode
NSString *newUrlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 
// 3.構建網絡URL對象, NSURL
NSURL *url = [NSURL URLWithString:newUrlStr];
 
// 4.創建請求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
 
// 5.創建參數字符串對象
NSString *parmStr = @"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10";
 
// 6.將字符串轉為NSData對象
NSData *PRamData = [parmStr dataUsingEncoding:NSUTF8StringEncoding];
 
// 7.設置請求體
[request setHTTPBody:pramData];
 
// 8.設置請求方式
[request setHTTPMethod:@"POST"];
     
// 9.創建同步鏈接
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
 
 
四、異步POST
前八步基本一樣
 

// 1.將網址初始化成一個OC字符串對象

NSString *urlStr = [NSString stringWithFormat:@"%@?wewe=%@", @"111", @"222"];

// 2.如果網址中存在中文,進行URLEncode
NSString *newUrlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 
// 3.構建網絡URL對象, NSURL
NSURL *url = [NSURL URLWithString:newUrlStr];
 
// 4.創建請求
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
 
// 5.創建參數字符串對象
NSString *parmStr = @"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10";
 
// 6.將字符串轉為NSData對象
NSData *pramData = [parmStr dataUsingEncoding:NSUTF8StringEncoding];
 
// 7.設置請求體
[request setHTTPBody:pramData];
 
// 8.設置請求方式
[request setHTTPMethod:@"POST"];
 
不同的是在這里我們創建的是異步請求鏈接
// 9.創建異步連接(形式2)
[NSURLConnection connectionWithRequest:request delegate:self];
 
執行相應的代理方法,即可完成數據的請求。
 
最后,分析一下這幾種呢網絡請求的區別。

GET請求和POST請求的區別:

1. GET請求的接口會包含參數部分,參數會作為網址的一部分,服務器地址與參數之間通過 ? 來間隔。POST請求會將服務器地址與參數分開,請求接口中只有服務器地址,而參數會作為請求的一部分,提交后臺服務器。

2. GET請求參數會出現在接口中,不安全。而POST請求相對安全。

3.雖然GET請求和POST請求都可以用來請求和提交數據,但是一般的GET多用于從后臺請求數據,POST多用于向后臺提交數據。

同步和異步的區別:

同步鏈接:主線程去請求數據,當數據請求完畢之前,其他線程一律不響應,會造成程序就假死現象。

異步鏈接:會單獨開一個線程去處理網絡請求,主線程依然處于可交互狀態,程序運行流暢。

 
 
 
 
 
 
 
 
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西峡县| 金溪县| 崇阳县| 远安县| 江永县| 项城市| 正阳县| 哈尔滨市| 平泉县| 洛南县| 新郑市| 务川| 万年县| 思南县| 同德县| 西城区| 金坛市| 舒城县| 雷州市| 宝坻区| 西贡区| 泰宁县| 景洪市| 阆中市| 侯马市| 淮北市| 五河县| 两当县| 禄劝| 孟连| 长白| 岑溪市| 琼海市| 贵阳市| 德江县| 阿克陶县| 金湖县| 饶阳县| 桂阳县| 城口县| 侯马市|