Android WebView Javascript XMLHttpRequest не работает - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть веб-представление о том, что я получаю доступ к данным с веб-сайта с помощью XMLHttpRequest в Javascript. Однако запрос не возвращает никаких данных. Я не знаю, нужно ли мне добавить дополнительную настройку к веб-представлению android или что-то в этом роде. Пожалуйста, помогите мне, спасибо.

Код:

main. js (подключен к веб-странице html) Когда я запускаю код в android studio, я вижу только белый Экран без какого-либо текста из ответа. Запуск индекса. html в моем браузере, однако, покажет весь текст, возвращенный в XMLHttpRequest.

var xhr = new XMLHttpRequest();
xhr.open('GET', "https://icanhazdadjoke.com/search", true);
xhr.setRequestHeader('Accept', 'application/json');
xhr.send();

xhr.onreadystatechange = processRequest;

function processRequest(e) {
  if (xhr.readyState == 4 && xhr.status == 200) {
    document.write(e.srcElement.responseURL);
    document.write('ERROR');
  }
}

MainActivity. java

package com.cartersnook.dadjokes;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        WebView web = this.findViewById(R.id.webView);
        web.setWebChromeClient(new WebChromeClient());
        web.getSettings().setJavaScriptEnabled(true);
        web.getSettings().setUserAgentString("Desktop");
        web.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
        web.getSettings().setPluginState(WebSettings.PluginState.ON);
        web.getSettings().setLoadWithOverviewMode(true);
        web.getSettings().setUserAgentString("Android WebView");
        web.loadUrl("file:///android_asset/index.html");
        web.requestFocus();
    }

AndroidManifest. xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.cartersnook.dadjokes">
    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:networkSecurityConfig="@xml/network_security_config"
        tools:ignore="GoogleAppIndexingWarning">
        <activity
            android:name=".MainActivity">
            <intent-filter >
                <action android:name="android.intent.action.FILTER" />
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
...