0
votes

Comment obtenir le corps de la requête post d'un WKWebView à Swift

J'ai traversé ce message Comment peut-il J'obtient le corps de la demande postale de WKWebView à Swift? . Mais cela ne dit pas ce que le script JS est utilisé. Je suis nouveau pour injecter JS à Swift pour que la poste ne me soit pas claire.

Après avoir chargé la demande dans WKWEBVIEW, je souhaite obtenir le corps HTTP de la demande postale. Quelle serait la bonne façon de l'obtenir.


0 commentaires

3 Réponses :


-1
votes
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
  print(navigationAction.request.httpBody)
}

5 commentaires

"Document.getElementyID (\" My-ID \ "). innerhtml". Qu'est-ce que ça veut dire? Dois-je ajouter un document HTML ou tout script JS pour que cela fonctionne?


Aussi, dois-je faire la demande en JS elle-même?


JsRonstring dans la fonction ci-dessus sort pour moi pour être vide pour moi et, à la suite, cela revient.


j'ai édité mes ans s'il vous plaît vérifier cela maintenant j'espère que cela fonctionne pour vous


httpbody est nulle. J'utilisais donc UiWebView plus tôt, utilisé pour renvoyer la demande.httpbody préfectant. Mais avec wkwebview httpbody est toujours nulle.



0
votes

Peut-être qu'il est lié au bogue: https://bugs.webkit.org/ show_bug.cgi? id = 191362 . Il a déjà été fixé dans iOS 13.


0 commentaires

0
votes

J'ai pu trouver la solution pour ce problème. Pour obtenir le contenu de la demande postale HTML Tout ce que nous devons ajouter est cette fonction: -

Func webview (_ webview: wkwebview, drefinish Navigation: wknavigation!) { PerfomCemonitor.StopEvent (événement: .startttologin) HideActivitorIndicator (retardé: True) P>

    webView.evaluateJavaScript("(function() { for (var i = 0; i < document.forms.length; ++i) { if (typeof document.forms[i]['SAMLResponse'] !== 'undefined')  return document.forms[i]['SAMLResponse'].value;} })();", completionHandler: { (jsonRaw: Any?, error: Error?) in
        guard let jsonString = jsonRaw as? String
        else
        {
            return
        }
        //use the extracted content for use.
    })
}


0 commentaires