Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在WKWebView中加载带有参数的POST URLRequest?_Ios_Swift5_Ios12_Xcode11.2 - Fatal编程技术网

Ios 如何在WKWebView中加载带有参数的POST URLRequest?

Ios 如何在WKWebView中加载带有参数的POST URLRequest?,ios,swift5,ios12,xcode11.2,Ios,Swift5,Ios12,Xcode11.2,对不起,我的英语很差 我尝试了多种类型的解决方案,但在Xcode 11.2.1和swift 5 我试试这个 var urlRequest = URLRequest(url: URL(string: "https://xxxxxx/login")!) urlRequest.httpMethod = "POST" let params = [ "username": SessionManager.share

对不起,我的英语很差 我尝试了多种类型的解决方案,但在
Xcode 11.2.1
swift 5

我试试这个

var urlRequest = URLRequest(url: URL(string: "https://xxxxxx/login")!)  
      urlRequest.httpMethod = "POST"  
     let params = [  
                            "username":   SessionManager.shared.username!,  
                            "password":  SessionManager.shared.password!,  
                            "vhost": "standard"  
      ]  
      let postString = self.getPostString(params: params)  
        urlRequest.httpBody = postString.data(using: .utf8)  
       webView.load(urlRequest)  


...  
//helper method to build url form request  
func getPostString(params:[String:String]) -> String  
    {  
        var data = [String]()  
        for(key, value) in params  
        {  
            data.append(key + "=\(value)")  

        }  
        return data.map { String($0) }.joined(separator: "&")  
    } 
还有这个

并尝试在我的代码中添加以下行

request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
但不起作用 我触发请求是因为未工作
WKWebView
屏幕已打开,但未加载请求。 如果我没有设置navigationDelegate并打开normal
URL
,那么它就完全工作了 如果我设置了navigationDelegate,那么所有请求中都会出现空白页,比如普通
URL
fire或post参数
URL
fire,所有请求都会出现空白页 我不明白
WKWebView
请帮帮我。
提前感谢

尝试此操作,我们将使用URLSession启动POST请求,将服务器返回的数据转换为字符串,而不是加载url,我们将使用loadHTMLString,它将:

设置网页内容和基本URL

内容是我们转换的字符串::-

var request = URLRequest(url: URL(string: "http://www.yourWebsite")!)
    request.httpMethod = "POST"
    let params = "Your Parameters"
    request.httpBody = params.data(using: .utf8)

    let task = URLSession.shared.dataTask(with: request) { (data : Data?, response : URLResponse?, error : Error?) in
            if data != nil {
                if let returnString = String(data: data!, encoding: .utf8) {
                    self.webView.loadHTMLString(returnString, baseURL: URL(string: "http://www.yourWebsite.com")!)
                }
            }
    }
    task.resume()

请求正文使用与查询字符串相同的格式:

parameter=value&also=another
因此,您请求的内容类型为application/x-www-form-urlencoded:

let postString = self.getPostString(params: params)  

urlRequest.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
urlRequest.httpMethod = "POST"
urlRequest.httpBody = postString.data(using: .utf8)  

webView.load(urlRequest)  

我试过了,但没有使用相同的空白页面,你有什么错误吗?您能否共享该端点上服务器的预期响应。此响应正在控制台中获取“收到的XPC错误连接对于消息类型3 kCFNetworkAgentXPCMessageTypePACQuery无效”