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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

ios網(wǎng)絡(luò)編程(入門級別)--基礎(chǔ)知識

2019-11-14 19:11:11
字體:
供稿:網(wǎng)友

在學(xué)習(xí)ios的過程中,停留在UI控件很長時間,現(xiàn)在正在逐步的接觸當(dāng)中?。。。。?!在這個過程中,小編學(xué)到了一些關(guān)于網(wǎng)絡(luò)編程知識,并且有感而發(fā),在此分享一下:

關(guān)于網(wǎng)絡(luò)請求的重要性我想不用多說了吧?。。τ谝苿涌蛻舳藖碚f,網(wǎng)絡(luò)的重要性不言而喻,常見的網(wǎng)絡(luò)請求有GET, POST,今天來看一下兩種網(wǎng)絡(luò)請求的實現(xiàn)方式。

第一部分   小編的理解

一、兩種網(wǎng)絡(luò)請求--POST請求與GET請求的異同(這里小編只討論的是異步鏈接)

GET的語義是獲取指定URL上的資源,將數(shù)據(jù)按照Variable = Value的形式,添加到action所指向的URL后面,并且兩者使用"?"連接,各個變量之間使用"&"連接。

POST的語法是指定資源“追加/添加”資源,將數(shù)據(jù)放在數(shù)據(jù)體上,按照變量和值相對應(yīng)的方式,傳遞到action所指向的URL。

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

2. GET請求參數(shù)會出現(xiàn)在接口中,不安全;而POST請求相對安全,所有數(shù)據(jù)對用戶不可見。

3.GET傳輸?shù)臄?shù)據(jù)量小,主要受URL長度限制;而POST可大量傳輸數(shù)據(jù),上傳文件只能使用POST。

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

二、 網(wǎng)絡(luò)請求的步驟
 1. 確定地址NSURL
 2. 建立請求NSURLRequest
 3. 建立并啟動連接NSURLConnection
     等待網(wǎng)絡(luò)處理~~~~
 4. 通過代理方法處理網(wǎng)絡(luò)請求
    遵守協(xié)議:NSURLConnectionDataDelegate


 三、 網(wǎng)絡(luò)代理方法
 1. 接收到服務(wù)器的響應(yīng),服務(wù)器要傳數(shù)據(jù),客戶端做接收準(zhǔn)備
 2. 接收服務(wù)器傳輸?shù)臄?shù)據(jù),可能會多次執(zhí)行
 3. 接收數(shù)據(jù)完成,做后續(xù)處理
 4. 服務(wù)器請求失敗,原因很多(網(wǎng)絡(luò)環(huán)境等等)
 5. 向服務(wù)器發(fā)送數(shù)據(jù),此方法僅適用于POST,尤其上傳文件


 四、 GET方法
    在NSURL中,指定參數(shù)(如果有,也可以不指定參數(shù)),例如:http://www.baidu.com


 五、 POST方法
    定義一個可變的URLMutableRequest
    1) 時長
        [request setTimeoutInterval:2.0f];
    2) 請求方式(默認是GET)
        [request setHTTPMethod:@"POST"];
    3)  數(shù)據(jù)體
        NSData *body = [string dataUsingEncoding:NSUTF8StringEncoding];
        [request setHTTPBody:body];
 
 六、 同步方法——必須要某個網(wǎng)絡(luò)請求完成后,才能后續(xù)執(zhí)行,例如網(wǎng)銀登錄
    看到方法參數(shù)中包含__autoreleasing字樣,在定義的對象名前面加上“&”
    NSURLResponse *response = nil;
    NSError *error = nil;
    // 同步操作沒有完成,后面的代碼不會執(zhí)行
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    1> 接收到數(shù)據(jù),表示工作正常
    2> 沒有接收到數(shù)據(jù),但是error為nil,表示接收到空數(shù)據(jù)
       通常服務(wù)器沒有對該請求做任何響應(yīng)
    3> error不為空,表示請求出錯

 七、 異步方法
     [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *reponse, NSData *data, NSError *error) {
 
        // 請求完成后的處理
     }];
 
    異步方法不用等待網(wǎng)絡(luò)請求結(jié)束

 

第二部分   小編的部分demo

 

 1 // 1. 確定地址NSURL 2     NSString *urlString = [NSString stringWithFormat:@"http://XXXXXXX.php?XXXX=%@&XXXX=%@", XXX, XXX; 3     urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 4     NSURL *url = [NSURL URLWithString:urlString]; 5     // 2. 建立請求NSURLRequest 6     NSURLRequest *request = [NSURLRequest requestWithURL:url]; 7     // 3. 建立并啟動連接NSURLConnection 8     NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self]; 9     // 啟動連接,異步連接請求10     [conn start];11     // 服務(wù)器通知準(zhǔn)備,準(zhǔn)備中轉(zhuǎn)數(shù)據(jù)12     self.serverData = [NSMutableData data];
GET方法
 1 // 1. 確定地址NSURL 2     NSString *urlString = [NSString stringWithFormat:@"http://XXXXX.php"]; 3     NSURL *url = [NSURL URLWithString:urlString]; 4     // 2. 建立請求NSURLRequest(POST) 5     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 6     // 1) 請求方式 7     [request setHTTPMethod:@"POST"]; 8     // 2) 數(shù)據(jù)體 9     // 因為dataUsingEncoding已經(jīng)實現(xiàn)了轉(zhuǎn)碼10     NSString *bodyStr = [NSString stringWithFormat:@"username=%@&passWord=%@", userName, pwd];11     NSData *body = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];12     [request setHTTPBody:body];13     // 3. 建立并啟動連接NSURLConnection14     NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];15     // 啟動連接,異步連接請求16     [conn start];17     // 服務(wù)器通知準(zhǔn)備,準(zhǔn)備中轉(zhuǎn)數(shù)據(jù)18     self.serverData = [NSMutableData data];
POST方法
1 - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{}2 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{}3 - (void)connectionDidFinishLoading:(NSURLConnection *)connection{}4 - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{}5 - (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite6 {}
網(wǎng)絡(luò)代理方法

 

小編能力有限,希望大牛來指點,不勝感激?。。。。。?/span>


上一篇:protocol(協(xié)議)

下一篇:autorelease方法

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 济南市| 延吉市| 丰镇市| 天长市| 弥勒县| 信丰县| 修武县| 繁昌县| 吉木萨尔县| 延川县| 吉林市| 靖州| 南靖县| 佛坪县| 从化市| 江城| 元谋县| 图片| 陆河县| 锡林郭勒盟| 大连市| 乌苏市| 保康县| 镇宁| 鄢陵县| 武夷山市| 周口市| 元阳县| 潼南县| 江城| 康马县| 文山县| 亚东县| 泰安市| 莱芜市| 达州市| 西藏| 陈巴尔虎旗| 始兴县| 静安区| 霍邱县|