2013-08-30 26 views
8

Tôi đang cố gắng sử dụng phương thức DELETE của HttpMethod. Mã mà tôi đang sử dụng cho điều đó làHttpMethod.Delete không hoạt động với RestTemplate của Spring-Android

response = restTemplate.exchange(url, HttpMethod.DELETE, requestEntity, Response.class); 

Tôi cũng đang sử dụng JacksonJson để lập bản đồ json. Chức năng xóa trả về json cần được ánh xạ tới lớp Response. Nhưng việc gọi dòng trên không hoạt động và cung cấp lỗi máy chủ nội bộ với 500 làm mã phản hồi. Nhưng, cùng một API không làm việc với RESTClient trong trình duyệt vì vậy tôi đoán có một cái gì đó mà tôi không làm đúng.

Trả lời

8

Sau khi thực hiện một số nghiên cứu thêm, có vẻ như phương thức DELETE không hỗ trợ phần thân yêu cầu. Vì chúng tôi đã có quyền kiểm soát API REST, chúng tôi đã thay đổi phần thân yêu cầu để được thêm làm tham số. Sau khi thực hiện thay đổi này, yêu cầu sẽ hoạt động bình thường.

Hy vọng nó sẽ giúp ai đó.

+5

Tôi tìm thấy giải pháp tại [link] này (http://knowledgebrowse.blogspot.com/2013/08/spring-resttemplate-calling-delete.html) hoạt động tốt để truyền thân yêu cầu trong yêu cầu phương thức DELETE – Ujjwal

+0

Ujjwal, cảm ơn bạn, đã giúp rất nhiều - đó là giải pháp cuối cùng –

0

Một chút muộn để bên tôi muốn kêu vang trong đây cũng như (tài liệu giải pháp của tôi cho hậu thế)

Tôi quá sử dụng mẫu còn lại mùa xuân, cũng cố gắng thực hiện một yêu cầu xóa với một tải trọng Và tôi cũng muốn để có thể lấy mã phản hồi từ phía máy chủ

Disclaimer: tôi đang trên Java 7

giải pháp của tôi cũng dựa trên một bài đăng ở đây trên SO, về cơ bản ban đầu bạn tuyên bố yêu cầu POST và thêm tiêu đề http để ghi đè phương thức yêu cầu:

RestTemplate tpl = new RestTemplate(); 

/* 
* http://bugs.java.com/view_bug.do?bug_id=7157360 
* As long as we are using java 7 we cannot expect output for delete 
* */ 
HttpHeaders headers = new HttpHeaders(); 
headers.add("X-HTTP-Method-Override", "DELETE"); 

HttpEntity<Collection<String>> request = new HttpEntity<Collection<String>>(payload, headers); 
ResponseEntity<String> exchange = tpl.exchange(uri, HttpMethod.POST, request, String.class); 
Các vấn đề liên quan