본문 바로가기
자바

Java - POST 메서드를 통해 HTTP 매개 변수를 쉽게 전송합니다

by º기록 2021. 4. 12.
반응형

이 코드를 사용하여 get 메소드를 통해 일부 매개 변수로 http 요청을 보내려면이 코드를 사용하고 있습니다.

void sendRequest(String request)
{
    // i.e.: request = "http://example.com/index.php?param1=a&param2=b&param3=c";
    URL url = new URL(request); 
    HttpURLConnection connection = (HttpURLConnection) url.openConnection();           
    connection.setDoOutput(true); 
    connection.setInstanceFollowRedirects(false); 
    connection.setRequestMethod("GET"); 
    connection.setRequestProperty("Content-Type", "text/plain"); 
    connection.setRequestProperty("charset", "utf-8");
    connection.connect();
}

이제는 매우 길기 때문에 post 메소드를 통해 매개 변수를 post 메소드를 통해 보내야 할 수도 있습니다. 나는 그 방법에 추가 매개 변수를 추가하려고 생각하고 있었다 (즉, httpmethod).

get 또는 post 를 통해 paramter를 보낼 수 있도록 가능한 한 적절한 코드를 어떻게 변경할 수 있습니까?

나는 그 변화를 희망하고 있었다

connection.setRequestMethod("GET");

...에

connection.setRequestMethod("POST");

트릭을 수행했을 것입니다. 그러나 매개 변수는 GET 메소드를 통해 계속 전송됩니다.

httpurconnection 에 도움이되는 메소드가 있습니까? 도움이되는 Java 구성이 있습니까?

어떤 도움이 될 것입니다.

 

해결 방법

 

GET 요청에서 매개 변수는 URL의 일부로 전송됩니다.

게시물 요청에서 파라미터는 헤더 뒤에 요청의 본문으로 전송됩니다.

httpurlconnection이있는 게시물을 수행하려면 연결을 열면 연결에 매개 변수를 쓸 필요가 있습니다.

이 코드는 시작해야합니다.

String urlParameters  = "param1=a&param2=b&param3=c";
byte[] postData       = urlParameters.getBytes( StandardCharsets.UTF_8 );
int    postDataLength = postData.length;
String request        = "http://example.com/index.php";
URL    url            = new URL( request );
HttpURLConnection conn= (HttpURLConnection) url.openConnection();           
conn.setDoOutput( true );
conn.setInstanceFollowRedirects( false );
conn.setRequestMethod( "POST" );
conn.setRequestProperty( "Content-Type", "application/x-www-form-urlencoded"); 
conn.setRequestProperty( "charset", "utf-8");
conn.setRequestProperty( "Content-Length", Integer.toString( postDataLength ));
conn.setUseCaches( false );
try( DataOutputStream wr = new DataOutputStream( conn.getOutputStream())) {
   wr.write( postData );
}

 

참조 페이지 https://stackoverflow.com/questions/4205980

 

 

반응형

댓글