我有一个用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
上完美无缺答案 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);
}