web-dev-qa-db-ja.com

応答を取得する際のSpringrestTemplateの問題

Restクライアントソフトウェアで呼び出したときに、RESTサーバーが応答を生成しています。上記のresttemplateコードで呼び出すと、サーバーは応答(ログの出力)を生成しますが、resttemplateは何もせず(呼び出し後に次の行は実行されません)、出力します内部エラー =。

これは私のサーバーの方法です

@ResponseBody
public ResponseEntity<Map<String, Object>> name(){......
...
return new ResponseEntity<Map<String, Object>>(messagebody, HttpStatus.OK);
}

これは私がrestTemplateを通してそれを呼んでいる方法です

ResponseEntity<Map> response1 = restTemplate.getForEntity(finalUrl.toString(), Map.class);
10

ワイルドカードMapの代わりに ParameterizedTypeReference を使用してみてください。このようになります。

ParameterizedTypeReference<Map<String, Object>> typeRef = new ParameterizedTypeReference<Map<String, Object>>() {};

ResponseEntity<Map<String, Object>> response = restTemplate.exchange(finalUrl.toString(), HttpMethod.GET, null, typeRef);
18

これは私のために働く例です

@RequestMapping(value = "/getParametros/{instancia}", method = RequestMethod.GET, produces = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<String> getParametros(@PathVariable String instancia)
{
    LOG.debug("REST. Obteniendo parametros del servidor " + instancia);
    Map<String, String> mapa = parametrosService.getProperties(instancia);
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Type", "application/json; charset=UTF-8");
    headers.add("X-Fsl-Location", "/");
    headers.add("X-Fsl-Response-Code", "302");
    ObjectMapper mapper = new ObjectMapper();

    String s = "";
    try
    {
        s = mapper.writeValueAsString(mapa);
    } catch (JsonProcessingException e)
    {
        LOG.error("NO SE PUEDE MAPEAR A JSON");
    }

    if (mapa == null)
        return new ResponseEntity<String>(HttpStatus.BAD_REQUEST);

    return new ResponseEntity<String>(s, headers, HttpStatus.OK);
}
0
user3193801

stringで応答を取得できるHttpStatusCodeExceptionをキャッチできます。以下のコードは私のために働きます。

restTemplate.postForObject( url, jsonRequest, ResponseData.class );
catch( HttpStatusCodeException codeException )
{
    String payload = codeException.getResponseBodyAsString();
    System.out.println( payload );

}
0
Abhishek Singh