ios networking - 筆記
課程筆記目錄:以下是lesson 1的筆記1.http請求和json解析(所在文章)
2.networking的mvc框架
以上文章的簡介:ios networking
以下將分成主要的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...