2016-07-19 4 views
0

JAX-RS 응용 프로그램 내에서 외부 소스에 대한 JSON API 호출을 작성해야합니다. 내 연구에서, 이것을하기 위해서 나는 작동하는 RestClient()을 사용할 필요가있다. 그러나 나는 성공적인 응답을 되 찾을 때만. 상태 코드가 400이 아닌 경우에는 본문을 구문 분석 할 수 없습니다. 내가 얻을 때 여기에 코드를 작업의 예 200 status :Apache Wink Rest에서 본문 수신 안 함 JAX-RS 응용 프로그램의 클라이언트 오류

Resource resource = client.resource("https://api.paytrace.com/v1/customer/create"); 
String response = resource 
    .contentType(MediaType.APPLICATION_JSON) 
    .header("Authorization", "Bearer " + accessToken) 
    .accept(MediaType.APPLICATION_JSON) 
    .post(String.class, paytraceJSON); 

나는 현재 단지 response 로그 아웃하지만 응답 세부 사항은 본문에 오류를 백업 할 때 아무것도 얻을 것을 시도하고있다. 이 문제를 해결할 더 좋은 방법이 있습니까? 그래서 제가 직접 사용하고있는 서비스 API의 오류를 반향시킬 수 있습니까?

답변

0

모든 것을 처리하기 위해 Resource을 사용하는 대신 String 대신에 ClientResponse으로 캐스팅을 활용할 수있었습니다. 어떤 이유에서든 응답이 실패 할 때 텍스트 대신 나중에 오류가 표시됩니다.

내 JAX-RS 응용 프로그램 내부의 외부 소스에 대한 JSON API 호출을 만들어야합니다. 내 연구에서,이 작업을 수행하려면 RestClient()를 사용해야합니다. 그러나 나는 성공적인 응답을 되 찾을 때만.

오래된 방법 :

Resource resource = client.resource("https://api.com"); 
String response = resource 
    .contentType(MediaType.APPLICATION_JSON) 
    .header("Authorization", "Bearer " + accessToken) 
    .accept(MediaType.APPLICATION_JSON) 
    .post(String.class, payload); 
//Parse the String here to turn it into a JSONObject 

새로운 방법 : 상태 코드 (400) 이외의 경우 내가 200 개 상태를 얻을 때 여기에 코드를 작업의 예 몸을 구문 분석 할 수 없습니다

Resource resource = client.resource("https://api.com/"); 
ClientResponse response = resource.contentType("application/json") 
     .accept("application/json") 
     .header("Authorization", "Bearer " + accessToken) 
     .post(payload); 
JSONObject customerResponseObject = response.getEntity(JSONObject.class);