2013-05-06 5 views
13

저는 Spring RestTemplate에 익숙하지 않습니다.Spring RestTemplate 게시물 응답

그러나이 프로젝트에서 나머지 API를 사용하기 위해 POST 호출을 보내려면 Spring RestTemplate을 사용해야합니다.

이 코드를 사용하고 있습니다 : 이것은 잘 작동

String restCall = restTemplate.postForObject(url+restParm, null, String.class); 

.

HTTP 상태 코드 (예 : 200 OK)를 검색하고 싶습니다. 내가 어떻게 할 수 있니? 감사합니다. .

+0

@Sotirios Delimanolis. 좋아, 그럼 내가 뭘 사용해야하니? – Zamboo

+0

내가 게시 한 링크 인 Apache HTTP Components를 확인하십시오. 다음은 예제를 보여줍니다. http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/org/apache/http/client/HttpClient.html 일부는 잃어 버리고 일부는 얻습니다. –

+0

아니면 http://stackoverflow.com/questions/3322381/spring-resttemplate-behavior-when-handling-responses-with-a-status-of-no-content를 살펴보십시오. 자신의'ResponseExtractor'를 구현하고'restTemplate.execute (...) '를 호출하십시오. –

답변

35

당신은

ResponseEntity<String> response = restTemplate.postForEntity(url+restParm, null, String.class); 
HttpStatus status = response.getStatusCode(); 
String restCall = response.getBody(); 
+0

헤더를 오류 케이스에 넣으려면 어떻게해야합니까? – simonides

+0

내가 응답 클래스를 모른다면? – Normal

+0

응답은 내 예제에서와 같이 항상 String으로 사용할 수 있습니다. 응답이 json 또는 xml과 같이 객체에 바인딩 될 수있는 형식이면 응답 유형으로 지정하고 Spring은이를 클래스에 바인딩합니다. 바인딩에 대한 더 많은 정보는 Spring 문서를 보라. – hyness

1

나는 봄 RestTemplate를 사용하여 내 경험을 공유하고 싶습니다 ... postForEntity 방법을 사용합니다. 그것은 정말로 나를 데려갔습니다.
많은 시간을 고칠 수있었습니다. 내 요구 사항 : 1) HTTP 본문에 설정된 매개 변수로 serverURI에 POST를 보냅니다. 매개 변수는 양식 데이터로 래핑되어야합니다. 2). 응답 본문에서 JSON 데이터로 응답하고 사용자 정의 된 클래스 이름이 restTemplate으로 전달됩니다. 결과 : Alwasy는 응답에서 NULL 본문을 가져 왔습니다.

나는 웹 사이트에서 검색하고 모든 제안을 지쳤다. 시신은 여전히 ​​비어 있습니다. 그래서 spring을 myCustomized Class 대신 String으로 돌려 주려고했습니다. JSON 문자열이 반환 된 것을 보았습니다. 그래서 응답 본문이 null 인 이유는 Spring이 JSON을 사용자 정의 된 클래스로 구문 분석 할 수 없기 때문입니다.

마지막으로 사용자 정의 클래스 정의에 @JsonProperty 주석을 추가하여 NULL 바디 문제를 해결했습니다. (이전에 사용자 정의 클래스에서 @SerializedName을 사용하고 Spring이 JSON을 내 객체로 구문 분석 할 수 없음)

+0

안녕하세요 Serena, StackOverflow에 오신 것을 환영합니다. 이 커뮤니티는 질의 응답에 중점을 둡니다.죄송합니다. 귀하의 게시물은이 질문에 대한 답변을 제공하지 않습니다. 이 커뮤니티가 어떻게 운영되는지에 대한 세부 사항을 이해하기 위해 [둘러보기] (http://stackoverflow.com/tour)로 초대합니다. 또한 귀중한 경험이 있다고 생각한다면 항상 새로운 질문을하고 대답 할 수 있습니다. 거기에 아무런 문제가 없다. 실제로 [권장] (http://stackoverflow.com/help/self-answer)! 즐거운 시간 되십시오! :) – Sam

관련 문제