HttpURLConnection을 사용하여 JSON POST 요청 만들기

1. 개요

이 자습서에서는 HttpURLConnection을 사용하여 JSON POST 요청을 만드는 방법을 보여줍니다 .

2. HttpURLConnection을 사용 하여 JSON POST 요청 작성

2.1. URL 개체 만들기

HTTP POST 메서드를 통해 JSON 데이터를 받아들이는 대상 URI 문자열 로 URL 객체를 생성 해 보겠습니다 .

URL url = new URL ("//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에서 찾을 수 있습니다.