我使用 expo 创建了一个 react native 应用,并且我正在使用expo应用或USB电缆在 android 设备上运行该应用,除了在实施身份验证之前使用 laravel APi 来测试是否一切正常之外,我还总是收到错误消息(我在fetch函数中定义了它) ,我说过可能是因为网址所致,但是当我在网络上尝试时,效果很好!我希望这个解释清楚! 我需要帮助,以将数据从laravel api获取到react native应用!
反应本地语言:
构造函数代码:
constructor(props) {
super(props);
this.state = {
email: "",
password: "",
};
}
这是获取功能:
_onLoginPressed = () => {
fetch("http://127.0.0.1:8000/api/indexp", {
method: "GET",
headers: {
Accept: "application/json",
"Content-Type": "application/json",
},
})
.then((response) => response.json())
.then((responseJson) => {
console.log(responseJson);
Alert.alert("logged");
})
.catch((error) => {
console.log('erroc message');
});
};
博览会在以下地址(LAN)中运行: exp://192.168.1.4:19000
laravel:
在api.php中
Route::get('indexp','PostsController@indexp');
在PostsController中:
public function indexp()
{
$post = Post::all();
return response()->json($post);
}
如果我安装了android studio并在模拟器上运行它,也许可以使用?
答案 0 :(得分:1)
您的问题出在提取请求上。您需要访问API服务器的IP,在这种情况下,是您PC的LAN地址(在Linux上运行ifconfig或在Windows中运行ipconfig)。 然后,您必须以该IP作为主机启动Web服务器,并根据需要设置端口,即 php artisan服务--host 192.168.10.100 --port 8000 ,其中IP是您的PC的IP,端口是您想要的IP。
然后,在您的提取请求上,您必须进入 http://192.168.10.100:8000/api/indexp 并从那里获取结果。 我建议不要在每个文件上获取IP和端口,而是将它们放在配置文件中,这样,如果您需要更改它们,只需在一个地方更改
答案 1 :(得分:0)
就像“julix”所说的,问题出在 URL、expo 或 react native 应用程序无法识别 http 请求 localhost 而是使用您的 ip 地址,laravel 手动将服务器主机从默认 127.0.0.1 设置为 192.168.0.1 (您的 IP 地址),端口为 8000