以 GET 方式提交資料給網站
所謂的 GET 方式就是 cilent 端將要傳送的資料附在網址的後面,然後傳送給 web server,web server 再根據網址最後所附加的內容來得知 cilent 端送過來的資料。
例如,https://www.wibibi.com/info.php?tid=145 ,這樣的網址傳送到 server 端後,server 端的程式就可以取得 tid=145 這個參數值。
- 步驟說明
- 建立 Single View App 專案
- 開啟 ViewController.swift,在 viewDidLoad() 中將一些參數傳送給 web server 去處理
let url = URL(string: "https://www.wibibi.com/info.php?tid=145") do{ //取得送出後資料的回傳值 let html = try String(contentsOf: url!) print(html), }catch{ print(error) }
- 執行
以 POST 方式提交資料給網站
相較於 GET 方式,POST 是將要傳送的資料方在資料傳送區,並不是放在網址的地方,這樣傳送資料就相對比 GET 來的安全許多,比較不容易讓其他人看到資料傳送的內容。
步驟說明
- 開啟欲查詢的網址
- 右鍵開啟網頁原始碼,可以至 網路 -> XHR 得知網頁所要求的資料
開啟 ViewController.swift,在 viewDidLoad() 中設定一個 URL 要求,然後將要提交的資料放在這個要求中交給 URLSession 就可以了。
let url = URL(string: "https://www.tdcc.com.tw/smWeb/QryStockAjax.do") let headers = [ "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8", "Accept": "application/json, text/javascript, */*; q=0.01", "Accept-Language": "zh-tw", "Accept-Encoding": "gzip, deflate, br", "Host": "www.tdcc.com.tw", "Origin": "https://www.tdcc.com.tw", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15", "Connection": "keep-alive", "Referer": "https://www.tdcc.com.tw/smWeb/QryStockAjax.do", "Content-Length": "22", "Cookie": "_ga=GA1.3.608656852.1582778538; _gat=1; _gid=GA1.3.93527523.1582778538; JSESSIONID=0000oXNOAad-635nOts9VJ73P3f:19tmdfnom", "X-Requested-With": "XMLHttpRequest", "MIME類型": "application/x-www-form-urlencoded;charset=UTF-8", "scaDates": "20200221", "scaDate": "20200221", "SqlMethod": "StockNo", "StockNo": "2605", "StockName": "", "REQ_OPR": "SELECT", "clkStockNo": "2605", "clkStockName": "", ] var request = URLRequest(url: url!, cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 30) request.httpMethod = "POST" request.allHTTPHeaderFields = headers let config = URLSessionConfiguration.default let session = URLSession(configuration: config) let dataTask = session.dataTask(with: request){ (data, response, error) in if let data = data{ let html = String(data: data, encoding: .utf8) print(html) } } dataTask.resume()
執行