【发布时间】:2021-09-12 11:40:16
【问题描述】:
首先我想说的是,我一直在很多地方寻找答案,但我似乎找不到任何适合我的答案。最后,我将列出我已经尝试过的所有选项。我是 Android 新手,这让我抓狂。
我要做的是向我的 Mac 上运行的本地 Laravel 数据库提交一个简单的 GET 请求。我正在尝试从模拟器上的 Android 应用程序调用此请求。 我的 Laravel 服务器在 127.0.0.1:8000 上运行并且它已打开。在 .env 文件中它声明 DB_PORT=3306,但是在请求中更改端口时并不重要。
我在 Android 中所做的事情:
String url = "http://127.0.0.1:8000/api/recipes"; // More on the IP at the end
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d("heeftGewerkt", response.substring(30));
errorMessage = "Succesful register";
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("heeftNietGewerkt", error.getMessage());
errorMessage = "Unsuccesful register";
}
});
我的 androidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.a1114049_1090780_iiatimd_app">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:theme="@style/Theme.1114049_1090780_iiatimd_app">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
我了解当向 127.0.0.1 发送请求时,它可能会在 android 设备上寻找服务器,但显然无法找到。所以我尝试将 127.0.0.1:8000 替换为 localhost:8000、local-ip:8000 和 public-ip:8000。这些似乎都不起作用。
当我使用 Postman (http://127.0.0.1:8000/api/recipes) 向 Laravel 服务器发出请求时,它可以正常工作,并且我会在我的数据库中获取所有食谱。谁能帮我解决这个问题?
编辑: 我得到的错误是“无法连接到 /127.0.0.1:8000”。看看这可能是因为我没有在任何地方传递任何数据库凭据,但我也不确定是否应该。
【问题讨论】: