如何在 Android 模拟器上向 WAMP 服务器发出 HTTP 请求
How to make HTTP request to WAMP server on Android emulator
我最初使用的是 android 配置单元上的教程:
http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/
事实证明,某些代码已针对 HTTP 请求弃用,我已经查看了 OkHttp 的文档。我正在尝试测试一些 PHP 文件,但我不断收到 "failure" 和所有不同 IP 地址的异常。我的 WAMP 图标是绿色的,我可以在浏览器中访问本地主机,但不能在 Android 模拟器上访问。 PHP 文件工作正常。我已经使用了 127.0.0.1、192.168.1.1XX、10.0.0.2 和本地主机,但在发出请求时没有 IP 地址有效。我什至关闭了我的防火墙和防病毒软件,但这并没有什么区别。我只是不断收到一个 logcat,一遍又一遍地说失败。我早些时候测试了电影数据库 API,它工作正常,所以这与 URL 有关。如何通过 android 模拟器连接到 WAMP?
import android.Manifest;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import okhttp3.OkHttpClient;
import okhttp3.Request;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int permissionCheck = ContextCompat.checkSelfPermission(getApplication(),
Manifest.permission.INTERNET);
OkHttpClient client = new OkHttpClient();
try {
Request request = new Request.Builder()
.url("10.0.2.2:80/android_connect/create_product.php")
.build();
Log.i("tag", "success");
} catch (Exception e) {
e.printStackTrace();
Log.i("tag", "failure");
}
}
}
错误是零星的。不同的 IP 给我不同的错误。无论哪种方式,它都会不断抛出异常。这也是我的第一个post,所以我真的不知道如何格式化错误。当我使用10.0.2.2时,是这样的:
07-20 22:16:15.694 9958-9958/? E/memtrack: 无法加载 memtrack 模块(没有那个文件或目录)
07-2022:16:15.694 9958-9958/? E/android.os.Debug: 未能加载 memtrack 模块: -2
07-2022:16:15.716 9958-9968/? E/art:运行时正在关闭时附加线程:Binder_1
07-2022:16:15.805 9962-9962/? E/memtrack: 无法加载 memtrack 模块(没有那个文件或目录)
07-2022:16:15.805 9962-9962/? E/android.os.Debug: 未能加载 memtrack 模块: -2
07-20 22:16:16.428 1971-2311/com.google.android.googlequicksearchbox E/Surface:getSlotFromBufferLocked:未知缓冲区:0xae48e1e0
07-2022:16:16.548 1178-1241/? E/SurfaceFlinger:ro.sf.lcd_density 必须定义为构建 属性
我实际上使用模拟器检查哪个 IP 地址会给我 WAMP 主页,结果 IP4 地址和 10.0.2.2 正在工作,我也更改了 http.conf 文件中的端口,所以端口现在必须工作。我使用的 android 配置单元教程已过时,因此 PHP 文件和 JSON 响应可能是问题所在。
原来我在link里少了"http://"。
回答线程:
我最初使用的是 android 配置单元上的教程: http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/
事实证明,某些代码已针对 HTTP 请求弃用,我已经查看了 OkHttp 的文档。我正在尝试测试一些 PHP 文件,但我不断收到 "failure" 和所有不同 IP 地址的异常。我的 WAMP 图标是绿色的,我可以在浏览器中访问本地主机,但不能在 Android 模拟器上访问。 PHP 文件工作正常。我已经使用了 127.0.0.1、192.168.1.1XX、10.0.0.2 和本地主机,但在发出请求时没有 IP 地址有效。我什至关闭了我的防火墙和防病毒软件,但这并没有什么区别。我只是不断收到一个 logcat,一遍又一遍地说失败。我早些时候测试了电影数据库 API,它工作正常,所以这与 URL 有关。如何通过 android 模拟器连接到 WAMP?
import android.Manifest;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import okhttp3.OkHttpClient;
import okhttp3.Request;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int permissionCheck = ContextCompat.checkSelfPermission(getApplication(),
Manifest.permission.INTERNET);
OkHttpClient client = new OkHttpClient();
try {
Request request = new Request.Builder()
.url("10.0.2.2:80/android_connect/create_product.php")
.build();
Log.i("tag", "success");
} catch (Exception e) {
e.printStackTrace();
Log.i("tag", "failure");
}
}
}
错误是零星的。不同的 IP 给我不同的错误。无论哪种方式,它都会不断抛出异常。这也是我的第一个post,所以我真的不知道如何格式化错误。当我使用10.0.2.2时,是这样的:
07-20 22:16:15.694 9958-9958/? E/memtrack: 无法加载 memtrack 模块(没有那个文件或目录) 07-2022:16:15.694 9958-9958/? E/android.os.Debug: 未能加载 memtrack 模块: -2 07-2022:16:15.716 9958-9968/? E/art:运行时正在关闭时附加线程:Binder_1 07-2022:16:15.805 9962-9962/? E/memtrack: 无法加载 memtrack 模块(没有那个文件或目录) 07-2022:16:15.805 9962-9962/? E/android.os.Debug: 未能加载 memtrack 模块: -2 07-20 22:16:16.428 1971-2311/com.google.android.googlequicksearchbox E/Surface:getSlotFromBufferLocked:未知缓冲区:0xae48e1e0 07-2022:16:16.548 1178-1241/? E/SurfaceFlinger:ro.sf.lcd_density 必须定义为构建 属性
我实际上使用模拟器检查哪个 IP 地址会给我 WAMP 主页,结果 IP4 地址和 10.0.2.2 正在工作,我也更改了 http.conf 文件中的端口,所以端口现在必须工作。我使用的 android 配置单元教程已过时,因此 PHP 文件和 JSON 响应可能是问题所在。
原来我在link里少了"http://"。
回答线程: