React Native Fetch Return 网络请求失败
React Native Fetch Return Network Request Failed
我正在使用 React Native 开发一个简单的应用程序。我正在 Genymotion Android 模拟器上测试它。我已经创建了本地 Web 服务器来监听请求,它是 运行 at http://localhost:8082/API/。
我已经测试了 api 并且工作正常。然后我从 index.android.js 发出一个获取请求。
这是来自 React Native 代码的 API 示例请求:
var api = { getUser(){
var url = "http://127.0.0.1:8082/API/";
return fetch(url)
.then((res) => res.json())
.catch(
(error)=>{
console.log('error' + error.message);
throw error;
}
);
}
}
module.exports = api;
这是来自 Api 服务器的代码(使用 flightPHP 构建)
Flight::route('GET /',function(){
try{
$db = new PDO('mysql:host=localhost;port=3307;dbname=testapp', 'root','');
$stmt = $db->prepare("SELECT * FROM user LIMIT 1");
$stmt->execute();
header('Content-type: application/json');
echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
$db = null;
}catch(Pdoexception $e){
echo $e->getMessage();
}
});
执行此调用后,我收到网络请求失败 ()。似乎 android 模拟器无法识别 api url。有什么建议吗?之前谢谢
我已经解决了。只需更改 React 代码中的 API url var url = "http://127.0.0.1:8082/API/
即可。至 var url = "http://local-ip-address:8082/API/
从命令行/cmd
中检查您的本地 ip 运行 ipconfig
您可以使用ngrok 覆盖网络请求。
Android是一个模拟器,当你fetch 127.0.0.1时,它会转到本地phone。
ngrok 将创建一个可从网络访问的 link 并重定向到本地网络服务器。
我正在使用 React Native 开发一个简单的应用程序。我正在 Genymotion Android 模拟器上测试它。我已经创建了本地 Web 服务器来监听请求,它是 运行 at http://localhost:8082/API/。 我已经测试了 api 并且工作正常。然后我从 index.android.js 发出一个获取请求。
这是来自 React Native 代码的 API 示例请求:
var api = { getUser(){
var url = "http://127.0.0.1:8082/API/";
return fetch(url)
.then((res) => res.json())
.catch(
(error)=>{
console.log('error' + error.message);
throw error;
}
);
}
}
module.exports = api;
这是来自 Api 服务器的代码(使用 flightPHP 构建)
Flight::route('GET /',function(){
try{
$db = new PDO('mysql:host=localhost;port=3307;dbname=testapp', 'root','');
$stmt = $db->prepare("SELECT * FROM user LIMIT 1");
$stmt->execute();
header('Content-type: application/json');
echo json_encode($stmt->fetchAll(PDO::FETCH_ASSOC));
$db = null;
}catch(Pdoexception $e){
echo $e->getMessage();
}
});
执行此调用后,我收到网络请求失败 ()。似乎 android 模拟器无法识别 api url。有什么建议吗?之前谢谢
我已经解决了。只需更改 React 代码中的 API url var url = "http://127.0.0.1:8082/API/
即可。至 var url = "http://local-ip-address:8082/API/
从命令行/cmd
您可以使用ngrok 覆盖网络请求。 Android是一个模拟器,当你fetch 127.0.0.1时,它会转到本地phone。 ngrok 将创建一个可从网络访问的 link 并重定向到本地网络服务器。