改造无法找到主机

时间:2018-10-24 13:35:49

标签: android retrofit2

我正在关注有关此链接http://thetechnocafe.com/getting-started-with-retrofit-in-android/的教程,以刷新我对如何使用改造的知识。 但是,当我收到响应时,它调用 onFailure ,并显示以下错误 无法解析主机“ jsonplaceholder.typicode.com”:没有与之关联的地址主机名 。 我已经检查了实现,它是正确的,我什至用邮递员检查了它,并且API返回了正确的预期JSON。 服务设置如下:

package cd.acgt.acgtexp.service;

import java.util.concurrent.Executors;

import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class NetworkService {
private static NetworkService mInstance;
private static final String BASE_URL = "https://jsonplaceholder.typicode.com/";
private Retrofit mRetrofit;

private NetworkService() {
    mRetrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .callbackExecutor(Executors.newSingleThreadExecutor())
            .addConverterFactory(GsonConverterFactory.create())
            .build();
}

public static NetworkService getInstance() {
    if (mInstance == null) {
        mInstance = new NetworkService();
    }
    return mInstance;
}

public JSONPlaceHolderApi getJSONApi() {
    return mRetrofit.create(JSONPlaceHolderApi.class);
}

}

我的API接口实现如下:

public interface JSONPlaceHolderApi {
   @GET("posts/{id}")
   public Call<Post> getPostWithID(@Path("id") int id);
}

这是我调用我的API的地方:

public void testApi() {

    Toast.makeText(this, "click", Toast.LENGTH_SHORT).show();
    Log.e(TAG, "test starts" );

    NetworkService service = NetworkService.getInstance();
    JSONPlaceHolderApi apiInterface = service.getJSONApi();
    apiInterface.getPostWithID(1).enqueue(new Callback<Post>() {

        @Override
        public void onResponse(Call<Post> call, Response<Post> response) {
            Log.e(TAG, "DONE");
        }

        @Override
        public void onFailure(Call<Post> call, Throwable t) {
            Log.e(TAG, "onFailure : " + t.getMessage());
            Log.e(TAG, "onFailure : " + t.toString());
        }
    });
}

这仅在onfailed方法中进行,并抛出错误,即主机名没有地址。

2 个答案:

答案 0 :(得分:1)

如果使用仿真器。检查网络图标是否可以连接互联网。它已连接-主机地址中出现此错误。否则,请关闭模拟器并重新启动。

共享网络已连接到仿真器

https://answers.microsoft.com/en-us/windows/forum/windows_10-networking-winpc/internet-connection-sharing-in-windows-10/f6dcac4b-5203-4c98-8cf2-dcac86d98fb9

答案 1 :(得分:0)

如果您在计算机中使用VPN,则模拟器将无法连接到Internet。断开与VPN的连接,然后重试。