我有一个使用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}


但是该URL应该是:

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


谁能告诉我为什么?我不知道这是怎么回事...这在1.3上效果很好

最佳答案

您需要在基本网址的末尾添加尾随/。否则,改装将忽略它。请参见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));

关于android - Retrofit 2.0中的错误网址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33158617/

10-12 06:17