Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android改装返回状态500内部服务器错误_Android_Rest_Retrofit - Fatal编程技术网

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的家伙需要修复它。投票支持好的解释即使你错过了什么,服务器端代码也不应该被破坏。很明显,这是一个服务器端错误。