如何解决XMLHttpRequest 不触发/调用任何 [on] 回调 Android
react-native
v0.63.4
android
XMLHttpRequest
在发送请求后没有调用任何 [on] callback
但如果我检查请求数据,我发现就绪状态为 DONE
,响应状态为 200 OK
,数据在那里,但没有回调被触发。
这是我正在测试的代码。
var request = new XMLHttpRequest();
request.onabort = () => {
console.warn("ABORTED");
};
request.onerror = () => {
console.warn("ERROR");
};
request.onloadstart = () => {
console.warn("LOAD START");
};
request.onloadend = () => {
console.warn("LOAD END");
};
request.ontimeout = () => {
console.warn("TIMEOUT");
};
request.onload = () => {
console.warn("LOAD");
};
request.onreadystatechange = (e) => {
console.warn("STATE CHANGE",request.status);
if (request.readyState !== 4) {
return;
}
if (request.status === 200) {
console.warn("success",request.responseText);
} else {
console.warn("error");
}
};
request.open("GET","https://api.github.com/",true);
request.send();
setTimeout(() => {
console.warn(JSON.stringify(request,null,2)); // this successfully log all the response data.
},1000);
我的 android/app/build.gradle
依赖项是。
dependencies {
implementation fileTree(dir: "libs",include: ["*.jar"])
implementation "com.facebook.react:react-native:+" // From node_modules
implementation 'com.facebook.android:facebook-android-sdk:[5,6)'
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
implementation platform('com.google.firebase:firebase-bom:26.4.0')
def multidex_version = "2.0.1"
implementation "androidx.multidex:multidex:$multidex_version"
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
exclude group:'com.facebook.fbjni'
}
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
exclude group:'com.facebook.flipper'
exclude group:'com.squareup.okhttp3',module:'okhttp'
}
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
exclude group:'com.facebook.flipper'
}
if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar")
releaseImplementation files(hermesPath + "hermes-release.aar")
} else {
implementation jscFlavor
}
}
我的 android/build.gradle
是
buildscript {
ext {
RNNKotlinVersion = "1.3.72"
buildToolsVersion = "29.0.2"
minSdkVersion = 21
compileSdkVersion = 29
targetSdkVersion = 29
playServicesVersion = "17.0.0" // or find latest version
androidMapsUtilsVersion = "2.2.0"
androidXCore = "1.0.2"
}
repositories {
google()
jcenter()
mavenLocal()
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.72"
classpath('com.android.tools.build:gradle:4.1.2')
classpath 'com.google.gms:google-services:4.3.5'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
mavenLocal()
mavenCentral()
maven {
// All of React Native (JS,Obj-C sources,Android binaries) is installed from npm
url("$rootDir/../node_modules/react-native/android")
}
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
google()
jcenter()
maven { url 'https://www.jitpack.io' }
}
}
最后,我的 AndroidManifest.xml
是:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp.app">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<application
android:usesCleartextTraffic="true"
android:name=".MainApplication"
android:label="@string/app_name"
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round"
android:allowBackup="false"
android:theme="@style/AppTheme">
<!-- You will only need to add this meta-data tag,but make sure it's a child of application -->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="mygooglekey"/>
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
<!-- You will also only need to add this uses-library tag -->
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
<activity android:name="com.facebook.FacebookActivity"
android:configChanges=
"keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name" />
<activity
android:name="com.facebook.CustomTabActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
</application>
</manifest>
我做错了什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。