2016-12-31 67 views
2

我正在運行一個學校項目,我是swift3中的新成員。swift3 webview和post請求

通過搜索,我知道如何從一個視圖傳遞數據花葯: Passing data from a tableview to webview

在上面的帖子中,他是用HTTP GET請求,將數據傳遞到網站,然後重新裝入webivew:

let URL = NSURL(string: "https://www.example.com?data=\(passData)") 
webView.loadRequest(NSURLRequest(url: URL! as URL) as URLRequest) 

我看到一些有用的鏈接,如有關代碼與http post請求在這裏: HTTP Request in Swift with POST method。結果,代碼可以打印出http響應。

我的問題是,如何實現webview與發送一個http post reuqest,如id,名稱等,而不是get方法。

用另一種語言:我想重新加載webview(如example.com),該網站將包含我通過http post請求發送的值。

example.com:

$id = $_POST['id']; 
echo $id; 

感謝。

回答

6

剛剛創造職位的URLRequest如圖所示的第二個鏈接,並把它傳遞給webView

var request = URLRequest(url: URL(string: "http://www.example.com/")!) 
request.httpMethod = "POST" 
let postString = "id=\(idString)" 
request.httpBody = postString.data(using: .utf8) 
webView.loadRequest(request) //if your `webView` is `UIWebView` 

(考慮使用WKWebView而非UIWebView。)

您可能需要idString是如果它包含一些特殊字符則會被轉義。


順便說一句,兩行代碼:

let URL = NSURL(string: "https://www.example.com?data=\(passData)") 
webView.loadRequest(NSURLRequest(url: URL! as URL) as URLRequest) 

似乎並不是一個很好的斯威夫特3碼。它可以寫成:

let url = URL(string: "https://www.example.com?data=\(passData)")! 
webView.loadRequest(URLRequest(url: url)) 
+0

還有另外一個解決辦法,如果以上不工作: https://stackoverflow.com/a/44951545/4260691 – OhadM