2015-10-19 61 views
1

我通过retrofit发送删除请求,但会导致获取请求响应。 它应该返回响应码204,但它返回200。retrofit在Android中删除请求更改以获取请求

注:在邮递员将返回204,但在Android中,它返回200

我的请求,代码如下所示:

api.DeleteProduct("JWT " + token, productId, new Callback<JsonObject>() { 
    @Override 
    public void success(JsonObject jsonObject, Response response) { 
     Log.e(TAG, "body "+response.getStatus()); 
     finish(); 
    } 

    @Override 
    public void failure(RetrofitError error) { 

    } 
}); 

其界面如下图所示:

@DELETE("/products/{productId}") 
public void DeleteProduct(@Header("Authorization") String authorization, @Path("productId") String productId, Callback<JsonObject> callback); 
+0

从你的java代码中,每一件事都没事。您的服务器很可能无法很好地处理Web请求。请始终注意,诸如GET,POST,HEAD,PUT等的http动词是基于约定的,即对于Web服务器来说没有严格的规则来尊重这些动词。例如,在nodejs上有一个称为方法覆盖的模块,可以将请求放入等等。您可以通过向改造的其余适配器添加记录器来验证您是否发送了删除请求。你可能想在生产中删除它。 –

+1

我使用邮递员来验证服务器响应。我得到204的删除请求和200获取请求。它似乎服务器是好的! –

+0

改造日志是这样的 - > HTTP DELETE http://www.bafeh.com/product/fees/122 10-19 10:34:29.068 21317-22526/com.example.masoud.firstproject E/ProductInfo :授权:... 10-19 10:34:29.068 21317-22526/com.example.masoud.firstproject - > END HTTP(no body) 10-19 10:34:29.798 21317-22526/com .example.masoud.firstproject < - HTTP 200 http://www.bafeh.com/product/fees/122(726ms) –

回答

1

它似乎Django框架希望在修补程序和删除请求的url末尾加上斜杠。

+0

谢谢你,我花了整整一天的时间找出这个 – Bytecode

+0

不客气。 –