JAVA로 API호출 정리해보기!!
/////////////호출할 url/////////////////////
url = new URL(ConstantString.BASE_URL + ConstantString.START_API);
////////////HttpURLConnection 생성//////////////////
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");///요청방식에 따라 GET,POST,PUT등 사용
POST /start
X-Auth-Token: {X-Auth-Token}
Content-Type: application/json
위와 같은 Request형식이라면 key,value로 connection에 set해줌
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("X-Auth-Token",
"주어진 x-Auth-Token값");
connection.setDoOutput(true);//post형식 데이터 전달하기 위해 사용
connection.setDoInput(true);//작성하지않아도 기본값 true 응답을 받지 않고 연결시간단축위해 false사용하기도함
JSONObject commands = new JSONObject();//Post형식요청 보낼때 Body로 사용
commands.put("problem", problemNum);
{
"problem" : problemNum
}
을 Body로 보낸다.
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(commands.toString());
outputStream.flush();
outputStream.close();
int responseCode = connection.getResponseCode();
System.out.println("응답코드: " + responseCode);
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));//response받아줌
String line;
while ((line = reader.readLine()) != null) {
response.append(line);//response는 StringBuilder
}
reader.close();
// 응답 내용 출력
//System.out.println("응답 내용: " + response.toString());
result = (JSONObject) new JSONParser().parse(response.toString());//Json형식으로 파싱
// 연결 종료
connection.disconnect();
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
을 gradel에 추가하여 사용
google에서 지원하는 json 오픈 라이브러리이다.
public static ArrayList<Truck> JsonToTruckArr(JSONObject response){
ArrayList<Truck> trucks= new ArrayList<>();
JSONArray responseArr=(JSONArray)response.get("trucks");//trucks를 key로 가지는 jsonArray가져옴
for(int i=0;i<responseArr.size();i++){//jsonArray에 속해있는 JSONObject의 각 key를 get하여 arrayList로 파싱
JSONObject truck=(JSONObject) responseArr.get(i);
trucks.add(new Truck(ObjectToInt(truck.get("id")),ObjectToInt(truck.get("location_id")),ObjectToInt(truck.get("loaded_bikes_count"))));
} //ObjectToInt는 따로 만든메소드 Object-> int로 바꿔준다.
return trucks;
}
public static JSONObject CommandsArrToJson(ArrayList<Command> commands){
JSONArray jsonArray=new JSONArray();
for(int i=0;i<commands.size();i++){//JsonObject안에 JsonArray넣으면서 key설정해줌
JSONObject jsonObject=new JSONObject();
jsonObject.put("truck_id",commands.get(i).getTruck_id());
jsonObject.put("command",commands.get(i).getCommand());
jsonArray.add(jsonObject);
}
JSONObject answer=new JSONObject();
answer.put("commands",jsonArray);
return answer;
}
직접 구현해본 카카오2차 코딩테스트!!
2021카카오2차 구현 주소