반응형

HttpPost 를 사용해서 이전에 생성했던 API를 테스트해보겠습니다. API에 의해 자동 생성된 URL 정보 http://127.0.0.1:8080/TEST/API/Pb7V-CGuFyzg_9qvu2zhQDq0ne50KS-kvNab9K44ArI 을 가지고 실제 데이터를 조회 하겠습니다. 
여기서 사용된 Pb7V-CGuFyzg_9qvu2zhQDq0ne50KS-kvNab9K44ArI가 실제 jwt의 시그니처 데이터이며  이것을 이용해 토큰을 확인하고 데이터를 파싱 하겠습니다.

 

 

우선 그전에 기본적인 API 호출 메소드를 생성해보겠습니다. 개발에 사용되는 라이브러리는 다음과 같습니다. com.mashape.unirest.http
참고 바랍니다. 우선 호출 할 데이터를 JSON String으로 선언하도록 하겠습니다.

ObjectMapper mapper = new ObjectMapper();

String json = "";

Map<String, Object> map = new HashMap<String, Object>();

ArrayList<String> arrList = new ArrayList<String>();

arrList.add("aaaa");

arrList.add("bbbb");

map.put("name", "testName");

map.put("alpa", arrList);

json = mapper.writeValueAsString(map);

json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map); // pretty print

System.out.println(json);

위 내용은 임시 데이터를 Map에 설정 하는 것입니다. 여기서는 alpa를 배열로 선언 하였습니다. 배열은 사용하는 예제이며 만약 배열을 사용하지 않는 다면 다음과 같이 하면 됩니다.

ObjectMapper mapper = new ObjectMapper();  
String json = "";  
Map<String, Object> map = new HashMap<String, Object>(); 
map.put("name", "testName");  
map.put("alpa1", "aaaa");  
map.put("alpa2", "bbbb");  
json = mapper.writeValueAsString(map);  
json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(map); // pretty print  
System.out.println(json); 


하지만 위와 같이 선언 한다면 키가 같은 경우는 아마도 요청 시 키도 같이 전달받아 처리해야 합니다. 이점 주의 하시기 바랍니다.
이제 다음의 메소드를 이용해 URL 호출할 수 있습니다.

private void doHttpClient2(String url, String jsonStr) { 
HttpClient httpClient = new DefaultHttpClient(); 

try { 
HttpPost request = new HttpPost(url); 
StringEntity params =new StringEntity(jsonStr); 
System.out.println(params.toString()); 
request.addHeader("content-type", "application/json"); 
request.addHeader("Accept","application/json"); 
request.setEntity(params); 

// handle response here... 
}catch (Exception ex) { 
// handle exception here 
} finally { 
httpClient.getConnectionManager().shutdown(); 
} 
} 


위 코드는 테스트 이라는 것 참고하시기 바랍니다. 위 메소드를 사용하는 경우 doHttpClient2(url, json); 이런 식으로 호출하면 됩니다.

 

 

위와 같이 사용하지 않고 JSON String을 직접 본문에 추가하여 전달 할 수도 있는데 본문에 추가하는 경우는 다음과 같이 사용이 가능합니다.

String bodyStr = "{\r\n  \"Index\":\"adfasdf\",\r\n    \"FromDate\": \"2018-07-01 11:43:00\",\r\n          \"ToDate\": \"2018-07-30 14:27:20\",\r\n          \"Size\": 5,\r\n          \"name\": \"root\",\r\n          \"data\": \"none\"\r\n}"; 
HttpResponse response = Unirest.post(url).header("content-type", "application/json").header("cache-control", "no-cache").body(bodyStr).asString(); 


본문 설정이 어렵습니다. 오타의 위험도 있고요 그래서 추천하지는 않습니다. 아니면 JSONObject를 이용하는 것도 좋은 방법인 것 같습니다. 위 내용 참고해서 URL 호출 해보시기 바랍니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기