我正在開發一個使用React Native的Android應用程序。我正在Galaxy Nexus API 23上測試我的應用程序,該應用程序在Android Studio中模擬,並在Mac上運行。React Native在Android上,ajax調用與提取失敗
我希望允許用戶互相共享信息。我使用php和mysql運行一個web服務器,並且我希望應用程序向服務器發出請求以在用戶之間共享數據。
我想使用Fetch API向我的開發服務器發出POST請求。我的JS代碼如下:
var AjaxEngine = {
test: function() {
return fetch('http://10.0.2.2/test.json')
.then((response) => response.json())
.then((responseJson) => {
console.log(responseJson);
return responseJson.movies;
})
.catch((error) => {
console.error(error);
});
}
};
通過AjaxEngine.test();
叫我在模擬器我收到以下錯誤:
ExceptionsManager.js:70 TypeError: Network request failed at XMLHttpRequest.xhr.onerror (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:23711:8) at XMLHttpRequest.dispatchEvent (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:9740:15) at XMLHttpRequest.setReadyState (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:25157:6) at XMLHttpRequest.__didCompleteResponse (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:25015:6) at http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:25090:52 at RCTDeviceEventEmitter.emit (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:8977:23) at MessageQueue.__callFunction (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:7065:23) at http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:6969:8 at guard (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:6917:1) at MessageQueue.callFunctionReturnFlushedQueue (http://localhost:8081/index.android.bundle?platform=android&dev=true&hot=false&minify=false:6968:1)
test.json包括:
{
"message":"hello world"
}
當我用'http://10.0.2.2/test.json'
替換時,請求成功'http://facebook.github.io/react-native/movies.json'
,所以函數本身就沒問題。
'http://localhost/test.json'
和'http://127.0.0.1/test.json'
都負載在Web瀏覽器,curl
和wget
。我也嘗試用127.0.0.1替換10.0.2.2。我也嘗試使用我的本地IP(129.xxx.x.x)
我需要做些什麼才能使這些請求有效?我如何從模擬的android應用程序訪問在本地主機上運行的開發服務器?