JAVA JSON POST 보내기

놀아·2021년 10월 4일
0

자바 스터디

목록 보기
4/7

출처

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

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

1.1 URL 개체 만들기

URL url = new URL("요청url");

1.2 연결 열기

위의 URL 객체에서 openConnection 메서드를 호출하여 HttpConnection 객체를 가져올 수 있습니다.
추상 클래스 이므로 HttpURLConnection을 직접 인스턴스화 할 수 없습니다.

HttpURLConnection con = (HttpURLConnection) url.openConneciton();

1.3 요청 방법 설정

POST 요청을 보내려면 요청 메서드 속성을 POST로 설정해야합니다.

con.setRequestMethod("POST");

1.4 요청 콘텐츠 유형 헤더 매개 변수 설정

설정 "콘텐츠 유형"에 요청 헤더 "응용 프로그램/JSON"를 JSON 형식으로 요청 내용을 보내 요청 본문을 JSON 형식으로 보내려면 매개 변수를 설정해야합니다.
그렇게 하지 않으면 서버는 HTTP 상태 코드 "400-bad request"를 반환합니다.

con.setRequestProperty("Content-Type","applicaiton/json;utf-8");

또한 콘텐츠 유형과 함께 문자 집합 인코딩을 언급했습니다. 이는 요청 콘텐츠 인코딩이 기본 인코딩 인 UTF-8 인코딩과 다른 경우에 유용합니다.

1.5 응답 형식 유형 설정

원하는 형식으로 응답을 읽으려면 "Accept" 요청 헤더를 "application/json"으로 설정합니다.

con.setRequestProperty("Accept","application/json");

1.6 콘텐츠를 보내는 데 연결이 사용되는지 확인

요청 내용을 보내려면 URLConnetion 객체의 doOutput 속성을 true로 설정해 보겠습니다.
그렇지 않으면 연결 출력 스트림에 콘텐츠를 쓸 수 없습니다.

con.setDoOutput(true);

1.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);
}

1.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 파서를 사용 하여 응답을 파싱합니다.

profile
머리가 나쁘기 때문에 메모와 정리를 한뒤에 찾아보기

0개의 댓글