2017-11-07 8 views
0

Mit restTemplate Aufruf Schnittstelle passieren kann, ist die Schnittstelle der Daten nicht annehmen kann, wird der Code wie follows`RestTemplate Postwert nicht

Map<String,Object> map = new HashMap<String,Object>(); 
    map.put("name", "xiaohong"); 

    HttpHeaders headers = new HttpHeaders(); 
    headers.setContentType(MediaType.APPLICATION_JSON); 
    HttpEntity<Map<String,Object>> httpEntity = new HttpEntity<Map<String,Object>>(map,headers); 

    List<HttpMessageConverter<?>> coverterList = new ArrayList<HttpMessageConverter<?>>(); 
    coverterList.add(new MappingJackson2HttpMessageConverter()); 
    coverterList.add(new StringHttpMessageConverter()); 
    coverterList.add(new FormHttpMessageConverter()); 


    String url = "http://127.0.0.1:8099/test/tput/xiaoming"; 
    RestTemplate restTemplate = new RestTemplate(); 
    restTemplate.setMessageConverters(coverterList); 
    ResponseEntity<Object> result = restTemplate.postForEntity(url, httpEntity, Object.class); 








@ResponseBody 
@RequestMapping(value="/tput/{age}", method = RequestMethod.POST) 
public Object testput(HttpServletRequest request,@PathVariable("age") String age){ 

    // name is null 
    String name = request.getParameter("name"); 
    System.out.println(name); 


    Map<String,Object> map = new HashMap<String,Object>(); 
    map.put("name", name); 
    map.put("age", age); 
    return map; 

` nicht den Wert von„name“ druckt das Ergebnis bekommen : null

+0

bekommen konnte Haben Sie den Wert des Namensfeld erhalten möchten auf 'System vorhanden. out.println (result.getBody()); '? – Runcorn

+0

möchten Name Formularmethode "Testput", aber Name ist null – bily

Antwort

0

Soweit die Frage geht, denke ich, dass Sie versuchen, den Wert von "Name" -Feld aus der Antwort von Post Request zu holen. Zu tun, so können Sie ein neues Objekt erstellen und den Wert aus dem Response-Cast und die Daten holen entsprechend wie,

User.java

public class User 
{ 
    private String age; 
    private String name; 
    public User() 
    { 
    } 
    public User(String age, String name) 
    { 
     this.user = age; 
     this.name = name; 
    } 
    public String getAge() 
    { 
     return age; 
    } 
    public void setAge(String age) 
    { 
     this.age = age; 
    } 
    public String getName() 
    { 
     return name; 
    } 
    public void setName(String name) 
    { 
     this.name = name; 
    } 
} 

und dann auf RestTemplate Beitrag Methodenausführung können Sie verwenden postForObject,

User result = restTemplate.postForObject(url, httpEntity, User.class); 
//Fetch Name 
result.getName(); 

natürlich ist dies eine der Methoden result.You holen kann die Antwort als String auch holen und sie dann zu JSON Karte die erforderlichen Daten zu holen.

1

restTemplate Form die Notwendigkeit, senden Sie die Standardhttpheaders zu setzen, `

MultiValueMap<String, String> map = new LinkedMultiValueMap<String, String>(); 
map.add("name", "yyyyyyy"); 
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); 

HttpEntity<MultiValueMap<String, String>> httpEntity = new HttpEntity<MultiValueMap<String,String>>(map,headers); 

` dass Anfrage

`String name = request.getParameter("name");`