2017-11-07 7 views
0

を渡すことはできません、インタフェースがデータを受け入れることができない、コードがfollows`RestTemplateポスト値がrestTemplateコール・インタフェースで

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; 

` ようである「名前」の値を取得できません 結果を印刷:null

+0

あなたは 'システムの名前フィールドの値を取得しますか得ることができる '

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); 

' をデフォルトHttpHeadersを設定する必要性を提出します。 out.println(result.getBody()); '? – Runcorn

+0

名前のフォームメソッド "testput"を取得したいが、名前はnull – bily

答えて

0

私はあなたがPost RequestのResponseから "name"フィールドの値を取得しようとしていると思います。新しいオブジェクトを作成し、応答から値をキャストし、

、同様に応じてデータを取り込むことができるように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; 
    } 
} 

そして、その後RestTemplateポストメソッド実行に使用することができますもちろんpostForObject

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

、これはresult.Youも文字列として応答を取得し、必要なデータをフェッチするためにJSONにマッピングすることができますフェッチする方法の一つです。

1

restTemplateフォームは、要求が

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