У меня есть веб-представление о том, что я получаю доступ к данным с веб-сайта с помощью 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>