2016-09-23 4 views
0

스프링 웹 클라이언트를 사용하여 응답을 가져 오려고 시도했지만 응답 크기가 문자열 클래스의 응답 크기보다 많으므로 결과 응답이 잘리지 않습니다. 잘리지 않고 응답을받을 수있는 다른 방법이 있습니까?RestTemplate postForObject 응답이 잘리지 않음

LinkedMultiValueMap<String, Object> requestMap = new LinkedMultiValueMap<String, Object>(); 
     //String response = ""; 
     try{ 
      File tempFile = File.createTempFile("ccda", "File"); 
      FileOutputStream out = new FileOutputStream(tempFile); 
      IOUtils.copy(ccdaFile.getInputStream(), out); 
      requestMap.add("ccdaFile", new FileSystemResource(tempFile));  
      HttpHeaders headers = new HttpHeaders(); 
      headers.setContentType(MediaType.MULTIPART_FORM_DATA); 
      HttpEntity<LinkedMultiValueMap<String, Object>> requestEntity = 
             new HttpEntity<LinkedMultiValueMap<String, Object>>(requestMap, headers); 
      RestTemplate restTemplate = new RestTemplate(); 
      FormHttpMessageConverter formConverter = new FormHttpMessageConverter(); 
      formConverter.setCharset(Charset.forName("UTF8")); 
      restTemplate.getMessageConverters().add(formConverter); 
      restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 

      String response = restTemplate.postForObject("localhost:8080", 
               requestEntity, String.class); 

      tempFile.delete(); 
     }catch(Exception exc) 
     { 
      exc.printStackTrace(); 
     } 

답변

0

당신은 내가 당신이 이런 식으로 할 수 있습니다 생각의 InputStream 을 사용할 수 있습니다 : requestCallback이 하나

public class MyRequestCallback implements RequestCallback 
{ 
    @Override 
    public void doWithRequest(ClientHttpRequest request) throws IOException 
    { 
     request.getHeaders().add(HttpHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON_VALUE); 
     request.getHeaders().add(HttpHeaders.ACCEPT, MimeTypeUtils.APPLICATION_JSON_VALUE); 
    } 
} 

같은 org.springframework.web.client.RequestCallback의 구현은

InputStream is = rt.execute("localhost:8080", HttpMethod.POST, requestCallback, responseExtractor); 

responseExtractor은 5 월 동안 이 클래스의 인스턴스

(210)는 일단의 InputStream 당신이 InputStream 인이 jsonMapping에 사용 할 수없는 상태가 inputStream을 위해 JSON 매핑 예외를 던지고있다

+0

유용합니다 희망 관리 할 수 ​​있습니다 얻을. – Vishwaksena

+0

@Vishwaksena 당신은 JSON을 소비하고 있습니까? 그래서 당신은 문자열을 위해 pasing 대신 Object를 직접 사용할 수 있다고 생각합니다. 매우 큰 JSON을 소비했고 결코이 문제가 없었습니다. –

+0

응답을 되돌려 받고 JSON을 사용하려고 시도했지만 String으로 가져 오는 것은 잘립니다. – Vishwaksena

관련 문제