通过 Cordova InAppBrowser 发送 Post 请求

Ser*_*gej 5 javascript post phonegap-plugins cordova inappbrowser

我正在开发一个cordova 混合应用程序(目前用于android)并使用InAppBrowswer-Plugin。

我想打开一个网页并使用 post 请求登录那里(因为它目前在实际的 Android 应用程序中通过 Java 完成)。

不知何故,这不起作用,我不知道为什么。这是我正在使用的代码:

var ref = cordova.InAppBrowser.open("www.thesite.dummy", "_blank", "location=yes");

var postAsString = 'var xhttp = new XMLHttpRequest();'+
    'xhttp.open("POST", "'+url+'", true);'+
    'xhttp.onreadystatechange = function() {if (xhttp.readyState == 4 && xhttp.status == 200) {alert("it worked")}};'+
    'xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");'+
    'xhttp.send("username=dummyUser&password=dummyPW")'
console.log(postAsString);

ref.executeScript({"code":postAsString});
Run Code Online (Sandbox Code Playgroud)

如您所见,我还使用 console.log 我的“postAsString”。如果我复制这个字符串并在 www.thesite.dummy 的控制台中执行它实际上可以工作,但不能在 InAppBrwoser

mqu*_*eia 8

只是为了帮助通过 Google 找到此问题的任何人,解决方案在该答案中进行了描述,如问题评论中所述。

更改特定上下文的值的代码如下:

var pageContent = '<html><head></head><body><form id="loginForm" action="www.thesite.dummy" method="post">' +
'<input type="hidden" name="username" value="dummyUser">' +
'<input type="hidden" name="password" value="dummyPW">' +
'</form> <script type="text/javascript">document.getElementById("loginForm").submit();</script></body></html>';
var pageContentUrl = 'data:text/html;base64,' + btoa(pageContent);

var browserRef = window.cordova.InAppBrowser.open(
    pageContentUrl ,
    "_blank",
    "hidden=no,location=no,clearsessioncache=yes,clearcache=yes"
);
Run Code Online (Sandbox Code Playgroud)