iOS請求網路資料的方式

2021-07-04 15:52:22 字數 4520 閱讀 2141

get同步請求

nsstring *strurl = @"銀行®ion=大連&output=json&ak=6e823f587c95f0148c19993539b99295";
// 乙個正常的url位址是不允許有中文的,只能有數字和26個英文本母的大小寫,和一些特殊的符號避暑&,%等,如果遇到帶中文的url,首先把它進行編碼
nsstring *strencode = [strurl stringbyaddingpercentescapesusingencoding:nsutf8stringencoding];

nslog(@"%@",strencode);

// 接下來,url符合要求後,就開始進行網路請求,一共分三步

// 1. 根據已經編碼好的url,建立乙個nsurl

nsurl *url = [nsurl urlwithstring:strencode];
// 2. 傳送乙個請求
nsmutableurlrequest *request =[nsmutableurlrequest requestwithurl:url];
// 3. 返回我們要的資料乙個nsdata物件

// 第乙個引數: 剛剛建立的秦秋

// 第二個引數: 返回的乙個相應

// 第三個引數: 錯誤資訊

nsurlresponse *response = nil;

nserror *error = nil;

nsdata *data = [nsurlconnection sendsynchronousrequest:request returningresponse:&response

error:&error];

// 對返回回來的資料,data進行json解析

// 把所有的銀行名都列印出來

nsmutabledictionary *dic = [nsjsonserialization jsonobjectwithdata:data options:nsjsonreadingmutablecontainers error:nil];

for (nsmutabledictionary *bankname in dic[@"results"])

}

post

nsstring *strurl = @"";

nsurl *url = [nsurl urlwithstring:strurl];

nsmutableurlrequest *request = [nsmutableurlrequest requestwithurl:url];

// 接下來就是post請求獨有的部分

// 把請求方式首先設定成post請求,預設是get

[request sethttpmethod:@"post"];
// 接下來需要吧請求內容放到request的body中
nsstring *bodystr = @"date=20131129&startrecord=1&len=30&udid=1234567890&terminaltype=iphone&cid=213";
// 需要把請求部分的字串程式設計nsdata型別的物件
nsdata *bodydata =[bodystr datausingencoding:nsutf8stringencoding];
// 把bodydata放到request中
[request sethttpbody:bodydata];

nsdata *data = [nsurlconnection sendsynchronousrequest:request returningresponse:nil

error:nil];

// json解析
nsmutabledictionary *dic = [nsjsonserialization jsonobjectwithdata:data options:nsjsonreadingmutablecontainers error:nil];

nslog(@"%@",dic);

for (nsmutabledictionary *newdic in dic[@"news"])

get非同步請求

nsstring *strurl = @"";

nsurl *url = [nsurl urlwithstring:strurl];

nsmutableurlrequest *request = [nsmutableurlrequest requestwithurl:url];

// 前兩步和之前還是一模一樣,第三部出現變化, 通過**的方式進行非同步操作
[nsurlconnection connectionwithrequest:request delegate:self];

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

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

- (void)connectiondidfinishloading:(nsurlconnection *)connection

nsstring *strurl = @"";
// 1. 建立乙個url
nsurl *url = [nsurl urlwithstring:strurl];
// 2.
nsmutableurlrequest *request =[nsmutableurlrequest requestwithurl:url];
// 3. 設定request請求方式
[request sethttpmethod:@"post"];
// 4. 設定body
nsstring *bodystr = @"date=20131129&startrecord=1&len=30&udid=1234567890&terminaltype=iphone&cid=213";
// 5. bodystr - > nsdata
nsdata *bodydata =[bodystr datausingencoding:nsutf8stringencoding];
// 6.把body新增到request中
[request sethttpbody:bodydata]

;

// 7. 網路請求在子執行緒裡進行請求,請求下來的資料需要通過空間作為載體顯示出來,需要把資料在主線程裡顯示,第二個引數就是指定把資料返回到哪個執行緒
[nsurlconnection sendasynchronousrequest:request queue:[nsoperationqueue mainqueue] completionhandler:^(nsurlresponse *response, nsdata *data, nserror *connectionerror) ];

}

get非同步通過block的方式

nsstring *str = @"";

//1. 建立乙個url

nsurl *url = [nsurl urlwithstring:str];

// 2. 傳送乙個請求

nsmutableurlrequest *request = [nsmutableurlrequest requestwithurl:url];

// 3. 非同步

[nsurlconnection sendasynchronousrequest:request queue:[nsoperationqueue mainqueue] completionhandler:^(nsurlresponse *response, nsdata *data, nserror *connectionerror) ];

iOS的網路請求

首先建立乙個 uiviewcontroller,然後在.m檔案中寫入 簽訂協議 inte ce mainviewcontroller 可變的資料屬性,用來拼接每一小塊資料 property nonatomic,retain nsmutabledata data property nonatomic,...

iOS 網路請求

pragma mark 網路請求 方式 非同步 ibaction delegatebuttondidclicked uibutton sender 方法 客戶端收到伺服器的響應 pragma mark 客戶端收到伺服器的響應 void connection nsurlconnection conne...

網路請求的方式

網路請求的兩種方式 1.get 是獲取指定的url上的資源 1 不安全不會將使用者的資訊暴露在url中 2 傳輸數量小,主要是因為url的長度有限 3 將資料按照variable value的形式,新增到action所指向的url後面,並且兩者使用 連線,各個變數之間使用 連線。2.post 對指定...