1. 개요
이 자습서에서는 HttpURLConnection을 사용하여 JSON POST 요청 을 만드는 방법을 보여줍니다 .
2. HttpURLConnection을 사용하여 JSON POST 요청 작성
2.1. URL 개체 만들기
HTTP POST 메서드를 통해 JSON 데이터를 받아들이는 대상 URI 문자열 로 URL 객체를 만들어 보겠습니다 .
URL url = new URL ("https://reqres.in/api/users");
2.2. 연결 열기
위의 URL 객체에서 openConnection 메서드를 호출 하여 HttpURLConnection 객체 를 가져올 수 있습니다.
추상 클래스이므로 HttpURLConnection을 직접 인스턴스화 할 수 없습니다 .
HttpURLConnection con = (HttpURLConnection)url.openConnection();
2.3. 요청 방법 설정
POST 요청을 보내려면 요청 메서드 속성을 POST로 설정해야합니다.
con.setRequestMethod("POST");
2.4. 요청 콘텐츠 유형 헤더 매개 변수 설정
설정 "콘텐츠 유형" 에 요청 헤더 "응용 프로그램 / JSON"를 JSON 형식으로 요청 내용을 보내. 요청 본문을 JSON 형식으로 보내려면이 매개 변수를 설정해야합니다.
그렇게하지 않으면 서버는 HTTP 상태 코드 "400-bad request"를 반환합니다.
con.setRequestProperty("Content-Type", "application/json; utf-8");
또한 콘텐츠 유형과 함께 문자 집합 인코딩을 언급했습니다. 이는 요청 콘텐츠 인코딩이 기본 인코딩 인 UTF-8 인코딩과 다른 경우에 유용합니다.
2.5. 응답 형식 유형 설정
원하는 형식으로 응답을 읽으 려면 “Accept” 요청 헤더를 “application / json” 으로 설정합니다.
con.setRequestProperty("Accept", "application/json");
2.6. 콘텐츠를 보내는 데 연결이 사용되는지 확인
요청 내용을 보내려면 URLConnection 객체의 doOutput 속성을 true로 설정해 보겠습니다 .
그렇지 않으면 연결 출력 스트림에 콘텐츠를 쓸 수 없습니다.
con.setDoOutput(true);
2.7. 요청 본문 생성
사용자 지정 JSON 문자열을 만든 후 :
String jsonInputString = "{"name": "Upendra", "job": "Programmer"}";
다음과 같이 작성해야합니다.
try(OutputStream os = con.getOutputStream()) {
byte[] input = jsonInputString.getBytes("utf-8");
os.write(input, 0, input.length);
}
2.8. 입력 스트림에서 응답 읽기
응답 콘텐츠를 읽을 입력 스트림을 가져옵니다. try-with-resources를 사용하여 응답 스트림을 자동으로 닫아야합니다.
전체 응답 내용을 읽고 최종 응답 문자열을 인쇄합니다.
try(BufferedReader br = new BufferedReader(
new InputStreamReader(con.getInputStream(), "utf-8"))) {
StringBuilder response = new StringBuilder();
String responseLine = null;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
System.out.println(response.toString());
}
응답이 JSON 형식 인 경우 Jackson 라이브러리, Gson 또는 org.json 과 같은 타사 JSON 파서를 사용 하여 응답을 파싱합니다.
3. 결론
이 기사에서는 HttpURLConnection을 사용하여 JSON 콘텐츠 본문으로 POST 요청을 만드는 방법을 배웠습니다 .
항상 그렇듯이 관련 코드 조각은 GitHub 에서 찾을 수 있습니다.