SORU
17 Kasım 2010, ÇARŞAMBA


Java - kolayca POST yöntemi ile HTTP parametre gönderme

Başarıyla bu kod GET yöntemi ile bazı parametreler ile HTTP istekleri göndermek için kullanıyorum

function void sendRequest(String request)
{
    // i.e.: request = "http://example.com/index.php?param1=a¶m2=b¶m3=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();
}

Şimdi çok uzun oldukları için POST yöntemi ile parametreleri (yani param1, param2, param3) göndermek için ihtiyacım olabilir. Bu yöntem için fazladan bir parametre (örneğin, Dize httpMethod eklemeyi düşünüyordum.

Nasıl mümkün olduğunca az yukarıdaki kod parametreleri gönderebilir ya da üzerinden ALMAK veya göndermek için değiştirebilir miyim?

Bunun değişeceğini umuyorum

connection.setRequestMethod("GET");

için

connection.setRequestMethod("POST");

hile yapardı, ama parametreleri GET yöntemi ile gönderilir.

HttpURLConnection yardımcı olacak herhangi bir yöntem var mı? Herhangi bir yararlı Java inşa var mı?

Herhangi bir yardım çok mutluluk duyacağız.

Teşekkürler
Dan

CEVAP
17 Kasım 2010, ÇARŞAMBA


Bir ricam olacak, Parametreler URL bir parçası olarak gönderilir.

Bir POST isteği, parametreleri başlıklardan sonra isteği bir vücut olarak gönderilir.

HttpURLConnection ile bir POST yapmak için bağlantıyı açtıktan sonra bağlantı için parametreleri yazmak gerekir.

Bu kod başlamak gerekir:

String urlParameters  = "param1=a¶m2=b¶m3=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 );
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • RawBrahs

    RawBrahs

    28 Aralık 2010
  • Vicious Computers

    Vicious Comp

    14 EKİM 2006