【问题标题】:how to do a GET request using retrofit2?如何使用retrofit2 执行GET 请求?
【发布时间】:2017-04-14 07:35:51
【问题描述】:

我有一个在本地主机上运行的 restfull web 服务。我想对该休息网址发出改造2 GET 请求。

MainActivity.java

private void requestData() {
        public static final String BASE_URL = "http://192.168.0.103:8080/SpringWithHibernate/users/";
        Toast.makeText(MainActivity.this, "In requestData() :: " + "ddd", Toast.LENGTH_LONG).show();

        Gson gson = new GsonBuilder().create();

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create(gson))
                .build();

        GetUserListAPI api = retrofit.create(GetUserListAPI.class);

        api.getUsersList().enqueue(new Callback<List<UserPojo>>() {
            @Override
            public void onResponse(Call<List<UserPojo>> call, Response<List<UserPojo>> response) {
                Log.d("UserList :: ", "Success");
                Log.d("UserList :: ", "Code :: " + response.code());

                user = response.body();

//                Log.d("UserList :: ", "count :: " + user.size());

//                Log.d("UserList :: ", "Result :: " + user.get(1).getUsername());
            }

            @Override
            public void onFailure(Call<List<UserPojo>> call, Throwable t) {
                Log.d("UserList :: ", "Failure");
            }
        });

    }

GetUserListAPI.java接口:

public interface GetUserListAPI {
    @GET("/users")
    Call<List<UserPojo>> getUsersList();
}

当我调用 requestData() 方法时,我不断收到 response.code() 为 404。

谁能帮帮我我应该在哪里弄错了?

感谢和问候。

【问题讨论】:

  • 你能用这个网址检查回复吗 -> demo1874861.mockable.io
  • make String BASE_URL = "192.168.0.103:8080/SpringWithHibernate" 表示 BASE_URL 中没有 "users/"
  • 并在这样的接口方法中使用@GET("users") Call&lt;List&lt;UserPojo&gt;&gt; getUsersList();
  • 是的,.. 通过从界面中删除 / @GET("users") 对我有用。感谢所有参与此对话的人。

标签: java android spring-security restful-authentication


【解决方案1】:

你的baseurl最后包含/users。它应该被删除,因为它会被应用程序从inerface @GET("/users") 你的 baseUrl 应该是

public static final String BASE_URL = "http://192.168.0.103:8080/SpringWithHibernate/"

在界面中

public interface GetUserListAPI {
    @GET("users")
    Call<List<UserPojo>> getUsersList();
}

【讨论】:

  • 删除 / ,在用户之前添加 / 就像我上面写的那样
  • 你在BaseUrl末尾添加http://192.168.0.103:8080/SpringWithHibernate/并在界面中这样使用....@GET("users")
  • 是的,这里的主要部分是不重复用户。你也对
  • 是的,.. 通过从界面中删除 / @GET("users") 对我有用。感谢所有参与此对话的人。
【解决方案2】:

如果您收到 404 错误,它与改造无关,它的后端问题。该网络服务当前是否处于活动状态? 但是我在您的请求中发现了另一个问题,那就是

public static final String BASE_URL = "http://192.168.0.103:8080/SpringWithHibernate/users/";

并且在 Retrofit 界面中你已经声明了

@GET("/users")

所以合并后的 URL 会产生

http://192.168.0.103:8080/SpringWithHibernate/users/users

这是不正确的,您应该只在改造接口方法中的字符串和服务名称中声明您的基本 url。

【讨论】:

  • 是的,.. 通过从界面中删除 / @GET("users") 对我有用。感谢所有参与此对话的人。
猜你喜欢
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
  • 2021-12-19
  • 1970-01-01
  • 2011-08-04
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多