2015-10-01 23 views
9

Trong dự án Android hiện tại của tôi, tôi đang gửi một số dữ liệu đến máy chủ web của tôi với thư viện Retrofit 2.0 mới. Tôi chỉ muốn chạy một kịch bản ở đó và máy chủ không trả lại bất cứ điều gì. Tôi nghĩ tôi có thể làm điều này với phương pháp này:Phương pháp trang bị thêm 2.0 mà không có phản hồi

@POST("persons/insert.php") 
Call<Void> insert(@Field("Name") String name); 

Vấn đề của tôi bây giờ là, Retrofit mà nhảy đến phương pháp onFailure mặc dù máy chủ trả về 200. Điều đó xảy ra vì không có gì có thể được chuyển đổi sang Void. Vì vậy, làm thế nào tôi nên sửa chữa phương pháp này? Tôi muốn rằng phương thức onResponse được gọi nếu máy chủ gửi 200 trở lại và onFailure nếu xảy ra lỗi. Làm thế nào tôi có thể đạt được điều đó?

Trả lời

19

Bạn có thể trả lại số ResponseBody.

@POST("persons/insert.php") 
Call<ResponseBody> insert(@Field("Name") String name); 

Bạn vẫn sẽ nhận được onResponseonFailure, nhưng nó sẽ không cố gắng deserialize suối đến một đối tượng.

+0

Cảm ơn bạn! Câu trả lời hoàn hảo cho vấn đề của tôi. – Cilenco

2

Bạn hoàn toàn có thể tránh được phần thân phản hồi. Trong phiên bản beta2, bạn có thể thực hiện Call<Void> để hủy nội dung phản hồi và chỉ lấy mã trạng thái http.

@POST("persons/insert.php") 
Call<Void> insert(@Field("Name") String name); 
Các vấn đề liên quan