android - 使用 OkHttp 的意外主机

标签 android get okhttp

我正在尝试通过 get 请求发送查询,问题是我不断收到 java.lang.IllegalArgumentException: unexpected host

   HttpUrl url = new HttpUrl.Builder()
            .scheme("http")
            .host("10.0.2.2" + "/api/" + 7) // This is where the error is coming in
            .addQueryParameter("lat", deviceLat[0])
            .addQueryParameter("long", deviceLong[0])
            .build();


    Request request = new Request.Builder()
            .url(url)
            .build();

感谢所有帮助:)

最佳答案

您的问题是 .host(string) 方法只需要 url 的 host 部分。删除路径段将起作用。您的代码应如下所示:

HttpUrl url = new HttpUrl.Builder()
        .scheme("http")
        .host("10.0.2.2") //Just the host (like "google.com", not "google.com/api")
        .addPathSegment("api")
        .addPathSegment("7")
        .addQueryParameter("lat", deviceLat[0])
        .addQueryParameter("long", deviceLong[0])
        .build();


Request request = new Request.Builder()
        .url(url)
        .build();

关于android - 使用 OkHttp 的意外主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45253789/

相关文章:

android - 在 App Store 上过时的应用程序并推广另一个应用程序

javascript - 使用 Express 从 Javascript 向 Node.js 发送/接收数据

javascript - 为什么这个 while 循环不调用其内部函数?

android - 如何使用 okhttp 禁用 SSLv3 回退

java - 发布并接收结果

java - 我应该使用哪个类来收集和存储不同的数据类型?

android - 无法修复 MediaController.show() 异常

c# - 在 C# 中直接引用时,如何让类使用默认的 getter/setter?

android - 为什么 10.0.2.2 在模拟器浏览器中有效,但在应用程序中无效?

android - OkHttp 异步调用 : AsyncTask or OkHttp async api?