java - 如何在Android模拟器上向WAMP服务器发出HTTP请求

标签 java android mysql wamp okhttp

我最初使用的是关于 android hive 的教程: http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/

事实证明,HTTP 请求的某些代码已被弃用,我已经查看了 OkHttp 的文档。我正在尝试测试一些 PHP 文件,但我不断收到“失败”消息,并且所有不同的 IP 地址都出现异常。我的 WAMP 图标是绿色的,我可以在浏览器中访问本地主机,但不能在 Android 模拟器上访问。 PHP 文件工作正常。我已经使用了 127.0.0.1、192.168.1.1XX、10.0.0.2 和 localhost,但在发出请求时没有 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给我不同的错误。无论哪种方式,它都会不断抛出异常。这也是我的第一篇文章,所以我真的不知道如何格式化错误。当我使用10.0.2.2时,如下:

07-20 22:16:15.694 9958-9958/? E/memtrack:无法加载 memtrack 模块(没有这样的文件或目录) 07-20 22:16:15.694 9958-9958/? E/android.os.Debug:无法加载 memtrack 模块:-2 07-20 22:16:15.716 9958-9968/? E/art:运行时关闭时线程附加:Binder_1 07-20 22:16:15.805 9962-9962/? E/memtrack:无法加载 memtrack 模块(没有这样的文件或目录) 07-20 22: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-20 22:16:16.548 1178-1241/? E/SurfaceFlinger:ro.sf.lcd_密度必须定义为构建属性

最佳答案

我实际上使用模拟器来检查什么IP地址会给我WAMP主页,结果发现IP4地址和10.0.2.2正在工作,并且我也更改了http.conf文件中的端口,因此端口必须现在正在工作。我使用的 android hive 教程已经过时,因此 PHP 文件和 JSON 响应可能是问题所在。

原来我在链接中缺少“http://”。

回答主题: Retrofit-IllegalArgumentException: unexpected url

关于java - 如何在Android模拟器上向WAMP服务器发出HTTP请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38493643/

相关文章:

java - 为什么此 Activity 显示在新的Android版本中而不显示在旧版本中

php - 在 MYSQL/PHP 中,我如何从 ID 1 中删除并将数据插入到 ID 5

php - 如何在 MySQL 中安全地存储密码并向外部服务进行身份验证

java - 在 Android 中检查互联网连接时出错

java - 如何判断一个时间戳是否在工作时间内?

java.util.Timer - 如何正确使用?

android - Unity Android游戏崩溃android.os.TransactionTooLargeException

mysql - MySQL 中分隔符内的匹配短语

java - 转换和泛型以在 Java 8 中启用列表连接

java - 增加与 JPanel 顶部的距离