iOS http請求和JSON解析

2021-07-08 12:18:43 字數 3270 閱讀 5073

ios networking - 筆記

課程筆記目錄:

1.http請求和json解析(所在文章)

2.networking的mvc框架

以上文章的簡介:ios networking

以下是lesson 1的筆記

以下將分成主要的7步來達到目的

主要步驟

1.設定url引數

2.構建url

3.設定request

4.設定request後該做的任務

-- 檢查錯誤

---- 1.檢查request是否有錯誤

---- 2.檢查傳送request後是否成功得到respond

---- 3.檢查respond的資料是否為空

-- 5. 解析http request得到的資料為json

-- 檢查錯誤

---- 1.檢查json資料是否有錯誤

---- 2.檢查需要的資料是否為空

-- 6. 使用資料

7.開始傳送request

主要步驟對應的函式

1.url引數字典和escapedparameters(dictionary) //這個是自己定義的函式

2.nsurl(string:)

3.nsmutableurlrequest(url:)

4.session.datataskwithrequest(:completionhandler:)

5.nsjsonserialization.jsonobjectwithdata(:options:)

6.使用資料

7.nsurlsessiontask.resume()

這步驟的原因

其實反過來思考就可以了。

首先我們要想得到json,

就需要用到nsjsonserialization.jsonobjectwithdata(_:options:),而這個函式需要data這個引數。

於是就需要用session.datataskwithrequest(_:completionhandler:),而這個函式需要request這個引數。

於是就需要用nsmutableurlrequest(url:),同理這函式需要url引數。

於是就要用到nsurl(string:),而這函式需要url的string引數。

最後就形成了上面的步驟。

檢查錯誤的解釋

1.檢查request是否填寫正確

2.3.通過返回值state code,檢查傳送是否成功

4.檢查返回的資料data是否為空

以下為**(使用課程上的專案**)

/* 1. 設定請求引數 */

let methodparameters = [

"request_token": requesttoken

]/* 2.構建url */

let url = nsurl(string: urlstring)!

/* 3.設定request */

let request = nsmutableurlrequest(url: url)

/*如果是post method

*//* 4.設定request後該做的任務 */

let task = session.datataskwithrequest(request)

print("there was an error with your request: \(error)")

return

}/* guard: did we get a successful 2xx response? 檢查http 請後 返回的status code,驗證是否請求成功 */

}/* guard: was there any data returned? 檢查是否 返回的資料是否不為空*/

guard let data = data else

/* 5. 解析資料為json格式 */

let parsedresult: anyobject!

do catch

/* guard: did themoviedb return an error? 返回的json是否有錯誤 */

guard (parsedresult.objectforkey("status_code") == nil) else

/* guard: is the "sessionid" key in parsedresult? 檢查是否有哪個key */

guard let sessionid = parsedresult["session_id"] as? string

else

print("cannot find key 'sessionid' in \(parsedresult)")

return

}/* 6. use the data! 使用資料*/

}/* 7. start the request 開始請求 */

task.resume()

ios http資料請求小結

1 同步請求可以從網際網路請求資料,一旦傳送同步請求,程式將停止使用者互動,直至伺服器返回資料完成,才可以進行下一步操作,2 非同步請求不會阻塞主線程,而會建立乙個新的執行緒來操作,使用者發出非同步請求後,依然可以對ui進行操作,程式可以繼續執行 3 get請求,將引數直接寫在訪問路徑上。操作簡單,...

get請求和post請求引數中文亂碼的解決

首先出現中文亂碼的原因是tomcat預設的編碼方式是 iso 8859 1 這種編碼方式以單個位元組作為乙個字元,而漢字是以兩個位元組表示乙個字元的。post請求引數中文亂碼的解決辦法 對於post請求,請求中問亂碼的兩種解決辦法。1 request.setcharacterencoding utf...

請求和響應

1 response物件的字元輸入流在編碼時候,採用的是iso 8859 1的編碼表 在httpservletresponse介面中,有setcharacterencoding utf 8 方法來設定字元編碼 2 瀏覽器的解碼方式是gb2312,而我們使用的編碼是 utf 8 因此亂碼。sethea...