我正在使用React Native开发一个简单的应用程序。我在Genymotion Android Emulator上测试它。我创建了本地Web服务器来监听请求,它在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 Server的代码(使用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。有什么建议吗?
之前谢谢答案 0 :(得分:2)
var url = "http://127.0.0.1:8082/API/
即可。到var url = "http://local-ip-address:8082/API/
检查你的本地ip只需从命令行/ cmd运行ipconfig
答案 1 :(得分:0)
您可以使用ngrok覆盖网络请求。 Android是一个模拟器,当您获取127.0.0.1时,它将转到本地电话。 ngrok将创建一个可从Web访问的链接,然后重定向到本地Web服务器。