Android改装返回状态500内部服务器错误
我正在使用像这样的改造来获取所有的书并删除所有的书Android改装返回状态500内部服务器错误,android,rest,retrofit,Android,Rest,Retrofit,我正在使用像这样的改造来获取所有的书并删除所有的书 @GET("/books") BookListResponse getAllBooks(); @DELETE("/clean") Response deleteAllBooks(); 但返回了错误状态500(内部服务器错误)。 我使用Chrome restful客户端应用程序测试了这两个restful调用,它们工作正常 然而,如果我只想得到一本书或者像这样删除一本书 @GET("books/1") Book
@GET("/books")
BookListResponse getAllBooks();
@DELETE("/clean")
Response deleteAllBooks();
但返回了错误状态500(内部服务器错误)。
我使用Chrome restful客户端应用程序测试了这两个restful调用,它们工作正常
然而,如果我只想得到一本书或者像这样删除一本书
@GET("books/1")
BookResponse getOneBook();
@DELETE("books/1")
Response deleteOneBook();
它们可以正常工作
所以我不确定这是服务器问题还是我遗漏了什么?这只是一个语义问题:当你对服务器说“请删除这本书”,但你没有说要删除哪本书,服务器不知道该怎么做(当你向/books发送删除时会发生这种情况)。因此误差为500。但是,当您说“请删除id为1的图书”时,现在服务器知道该做什么了(当您向/books/1发送删除时会发生这种情况) 如果你像这样设置你的服务器,这样工作是可以的,但是我从来没有见过任何REST服务删除特定型号的所有记录。同样,如果您以这种方式对服务器进行编码,那么就可以确保请求以您想要的方式到达服务器
毕竟,如果出现错误500,请检查服务器。问题肯定不在Android端。只需在请求中添加标题accept,如下所示:
Request request = new Request.Builder()
.url(urlString)
.header("accept", "application/json")
.build();
更新
在改型2.1中,请求生成器已更改,因此您必须在改型接口方法中指定头
@Headers(“接受:应用程序/json”)
@获取(“产品”)
调用getAllProducts()代码>Hi,我通过向请求添加一个accept头并将头值设置为application/json解决了这个问题。服务器API不是我写的,所以我对它们没有任何控制权。请投票支持好的解释。即使您遗漏了某些内容,服务器端代码也不应该中断。服务器端代码中有一个bug。api的家伙需要修复它。投票支持好的解释即使你错过了什么,服务器端代码也不应该被破坏。很明显,这是一个服务器端错误。