openConnection(proxy)는 경로를 지정해 연결을 만듭니다. 요청을 시작하기 전에 반환된 HttpURLConnection에 HTTP 메서드와 본문을 설정합니다:

Proxy route = new Proxy(Proxy.Type.HTTP,
    new InetSocketAddress("proxy.example", 8080));
HttpURLConnection connection = (HttpURLConnection)
    URI.create("http://www.example.com/submit").toURL().openConnection(route);

try {
    connection.setConnectTimeout(5000);
    connection.setReadTimeout(15000);
    connection.setRequestMethod("POST");
    connection.setDoOutput(true);
    connection.setRequestProperty("Content-Type",
        "application/x-www-form-urlencoded; charset=UTF-8");

    byte[] form = "message=hello+proxy".getBytes(StandardCharsets.UTF_8);
    try (OutputStream out = connection.getOutputStream()) {
        out.write(form);
    }

    int status = connection.getResponseCode();
    System.out.println(status);
    InputStream response = status >= 400
        ? connection.getErrorStream() : connection.getInputStream();
    if (response != null) response.close();
} finally {
    connection.disconnect();
}

예제는 작은 폼을 보내고 상태를 출력하며 사용하지 않는 응답 스트림을 닫습니다. 본문이 필요할 때는 이 마지막 단계를 애플리케이션의 응답 본문 처리로 바꾸십시오.

프록시 호스트 이름과 포트는 route에 속합니다. 프록시 계정 없이 허용된 공개 폼 테스트에서는 HTTP 프록시 목록 의 항목에서 HTTP 주소를 선택합니다. URL은 폼의 끝점으로 유지됩니다. 동적 폼 값에는 이스케이프하지 않은 입력을 등호와 앰퍼샌드로 연결하지 말고 URLEncoder로 각 값을 인코딩하십시오.

출력 스트림은 준비된 바이트를 보냅니다. 쓰고 닫은 뒤 상태를 읽고, 필요에 따라 일반 응답 스트림이나 오류 스트림을 선택합니다. 실패한 HTTP 응답에는 애플리케이션이나 프록시의 유용한 오류 내용이 들어 있을 수 있습니다.

관련 글