2012-08-30 34 views
7

Tôi có một url api còn lại và gửi giống như yêu cầu POST với thân (tên người dùng, mật khẩu, các thông số khác) thông qua Rest Client (restclient-ui-2.4-jar-with-dependencies) và nó hoạt động tốt mà không gặp bất kỳ vấn đề nào .Cần trợ giúp về RestTemplate Đăng Yêu cầu với Thông số Cơ thể?

Ex:

URL: https://test.com/cgi-bin/testing/api Body: username = testuser & password = pass123 & id = 13.002 & name = raju

Cùng không hoạt động tốt khi tôi sử dụng Spring RestTemplate postForObject (url, phương thức varmap, Employee.class).

Ai đó có thể giúp tôi với một ví dụ đơn giản trong đó yêu cầu là một URL, với thông số cơ thể và phản hồi là XML được ánh xạ với một lớp?

Mã mẫu:

MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>(); 
    map.add("username", "test"); 
    map.add("password", "test123"); 
    map.add("id", "1234"); 
    MarshallingHttpMessageConverter mc = new MarshallingHttpMessageConverter(); 
    mc.setMarshaller(new Jaxb2Marshaller()); 
    mc.setUnmarshaller(new Jaxb2Marshaller()); 
    list.add(marshallingHttpMessageConverter); 
    emediateRestTemplate.setMessageConverters(list); 
    Employee employee = (Employee) restTemplate.postForObject(url, map, Employee.class); 

Cảm ơn trước, Kathir

+0

Bạn có thể hiển thị mã của mình không hoạt động không? –

+0

restTemplate.postForObject (url, parametersMap, Employee.class); . Ngoài ra, bạn có thể vui lòng cho tôi biết sự khác biệt giữa postForObject vs postForExchange không? – Kathir

+0

Bạn nên cập nhật câu hỏi bằng mã, không thêm câu hỏi vào nhận xét. Ngoài ra, vui lòng hiển thị nhiều hơn một dòng mã, cũng hiển thị thiết lập có liên quan. Cuối cùng, có rất nhiều tài liệu trên trang web của Spring về những gì từng phương pháp làm. Có lẽ bạn muốn xem xét điều đó trước tiên. –

Trả lời

13

Các bộ chuyển đổi trên Ex: "MarshallingHttpMessageConverter" không bắt buộc.

MultiValueMap<String, String> parametersMap = new LinkedMultiValueMap<String, String>(); 
parametersMap.add("username", "test"); 
parametersMap.add("password", "test123"); 
parametersMap.add("id", "1234"); 

vì bài:

restTemplate.postForObject(url, parametersMap, Employee.class); 

url là: String - URL api còn lại parametersMap - MultiValueMap nhân viên - đối tượng mà cần phải được chuyển đổi từ các phản ứng JSON

Đối Nhận:

restTemplate.getForObject(url, class object, variablesMap); 

url là: Chuỗi - phần còn lại ap i URL biến Bản đồ - Bản đồ đối tượng lớp - đối tượng cần được chuyển đổi từ phản hồi JSON

+0

Cách nhận phản hồi của yêu cầu? – gstackoverflow

Các vấn đề liên quan