Xmlhttprequest к веб-сервису не работает в apk - отлично работает в браузерах - PullRequest
0 голосов
/ 21 июня 2019

Очень простая веб-страница, содержащая xmlhttprequest, работает во всех браузерах на всех устройствах, включая телефон Android, а также в браузере BlueStacks.

  1. Пробовал несколько вариантов длины контента, типа контента и т. Д.

  2. Отлично работает во всех браузерах.

  3. Не работает при компиляции в Android APK с использованием PhoneGap online (установлен как «member»).

Веб-страница содержит код и кнопку для вызова функции sayHi:

    const url =“ReturnHi";

    function testXMLHttp() {
        try {
            var result = "Sorry...not complete";   var result = "Sorry...not complete";
            var returnValue = "";
            var request = new XMLHttpRequest();
            var params = "";
            request.open("POST", url, false);
            request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            request.setRequestHeader("Content-length", params.length);
            request.setRequestHeader("Connection", "close");
            request.onreadystatechange = function () {//Call a function when the state changes.
                if (request.readyState == 4 && request.status == 200) {
                    returnValue = request.responseText;
                    alert("response: " + request.responseText);
                    result = returnValue;
                    return result;
                }
            }
            request.send(params);
            return result;
        } catch (e) {
            alert("Error on test " + e.Message);
        }
    }
    function sayHi() {
        var result = testXMLHttp();
        alert("In sayHi " + result);
    }

PhoneGap config.xml равен

<?xml version="1.0" encoding="UTF-8" ?>
<widget xmlns   = "http://www.w3.org/ns/widgets"
    xmlns:gap   = "http://phonegap.com/ns/1.0"
    id          = "com.dalcotech.member"
    versionCode = "17"
    version     = "1.0.0" >

<!-- versionCode is optional and Android only -->

  <name>Member</name>

  <description>
      Member Android package
  </description>

  <author>
      F Dale
  </author>

  <access origin="*" />
  <platform name="android" />
  <preference name="android-minSdkVersion" value="16" />
  <preference name="android-targetSdkVersion" value="28" />

</widget>

Ожидаемый результат - должен вернуть:

response: <?xml version="1.0" encoding="utf-8"?>
<anyType xmlns:q1="http://www.w3.org/2001/XMLSchema" d1p1:type="q1:string" xmlns:d1p1="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">Email sent to fred.dal@outlook.com</anyType>

При выполнении в качестве приложения для Android:

  1. Он не доходит до веб-службы (я добавил код в функцию веб-службы для отправки мне электронного письма при получении запроса)

  2. Возвращает "Извините ... не завершено", значение по умолчанию для результата var.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...