微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从retrofit2调用本地主机?

如何解决如何从retrofit2调用本地主机?

我正在尝试从我的 android 模拟器访问 localhost(127.0.0.1) 上的 API。我在 API 上有一个断点。

  1. Postman 调用 API 没有问题。
  2. 模拟器上的 Google Chrome 可以毫无问题地调用 API。
  3. 如果我将 URL 更改为 Internet 上的某些内容(例如“https://jsonplaceholder.typicode.com”),则模拟器上的应用程序可以调用 API
  4. 我在 android 模拟器上的应用程序无法调用 localhost(127.0.0.1) 上的 API。它不会激活 API 操作上的断点。

改造代码

public class TestApiContainer {

    public interface TestApi {

        @GET("EmptyTest/test")
        Call<String> test();
    }

    static TestApi testApi;

    public static TestApi api(){
        if (testApi == null)
            testApi = new Retrofit
                    .Builder()
                    .baseUrl("https://10.0.2.2:44351")
                    .addConverterFactory(ScalarsConverterFactory.create())
                    .addConverterFactory(GsonConverterFactory.create())
                    .build()
                    .create(TestApi.class);
        return testApi;
    }
}

调用代码

TestApiContainer.api().test().enqueue(new Callback<String>() {
    @Override
    public void onResponse(Call<String> call,Response<String> response) {
        
        if (!response.isSuccessful())
            return;
    }
});

邮递员截图:

enter image description here

它也适用于 Android 模拟器的 Google Chrome。截屏:

enter image description here

我的设置可能有什么问题?你能帮忙吗。

解决方法

您可能收到证书错误,因为您请求的是 HTTPS,但您的 chrome 屏幕截图的警告符号表明可能存在 SSL 问题。

试试:

  1. 将您的基本网址更改为 http://10.0.2.2:44351
  2. Permitting cleartext traffic for that IP

如果这没有帮助,您应该使用您看到的 logcat 错误更新您的问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?