Retrofit 2.0中的错误网址

时间:2015-10-15 21:11:50

标签: android retrofit

我有一个用Eclipse,Maven和Retrofit 1.3制作的项目。我想迁移到Android Studio,我不得不在gradle Retrofit 2.0中导入。

在我做了所有必要的修改以使其工作之后,我得到了一些意想不到的东西。

我的改装构建器设置如下:

Retrofit.Builder builder = new Retrofit.Builder()
                .baseUrl("http://localhost:8080/openbravo/org.openbravo.service.json.jsonrest")
                .client(httpClient)
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create(gson));

因此,我的服务方法已更改为使用<Call<List<T>>而非List<T>

当我执行GET方法登录时,我收到此响应错误:

Response{protocol=http/1.1, code=404, message=Not Found, url=http://localhost:8080/ADUser?_where=username%3D%27Openbravo%27}

但网址应该是:

http://localhost:8080/openbravo/org.openbravo.service.json.jsonrest/ADUser?_where=username%3D%27Openbravo%27

谁能告诉我为什么?我不知道发生了什么......这在1.3

上完美无缺

2 个答案:

答案 0 :(得分:2)

您需要在基本网址的末尾添加尾随/。否则改装会忽略它。请参阅https://github.com/square/retrofit/issues/1049

Retrofit.Builder builder = new Retrofit.Builder()
                .baseUrl("http://localhost:8080/openbravo/org.openbravo.service.json.jsonrest/")
                .client(httpClient)
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create(gson));

答案 1 :(得分:0)

你可以,

将您的基本网址设为http://localhost:8080

并在您的控制器类中,

public interface RestController {

    @GET("/openbravo/org.openbravo.service.json.jsonrest/ADUser")
    Whatever getData(@Path("_where") String whatever);

}