Jawaban yang Diperbarui:
Karena beberapa kelas, dalam jawaban asli, sudah usang dalam versi yang lebih baru dari Komponen HTTP Apache, saya memposting pembaruan ini.
Omong-omong, Anda dapat mengakses dokumentasi lengkap untuk lebih banyak contoh di sini .
HttpClient httpclient = HttpClients.createDefault();
HttpPost httppost = new HttpPost("http://www.a-domain.com/foo/");
// Request parameters and other properties.
List<NameValuePair> params = new ArrayList<NameValuePair>(2);
params.add(new BasicNameValuePair("param-1", "12345"));
params.add(new BasicNameValuePair("param-2", "Hello!"));
httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
//Execute and get the response.
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
if (entity != null) {
try (InputStream instream = entity.getContent()) {
// do something useful
}
}
Jawaban asli:
Saya merekomendasikan untuk menggunakan Apache HttpClient. lebih cepat dan lebih mudah diimplementasikan.
HttpPost post = new HttpPost("http://jakarata.apache.org/");
NameValuePair[] data = {
new NameValuePair("user", "joe"),
new NameValuePair("password", "bloggs")
};
post.setRequestBody(data);
// execute method and handle any error responses.
...
InputStream in = post.getResponseBodyAsStream();
// handle response.
untuk informasi lebih lanjut, periksa url ini: http://hc.apache.org/
PostMethod
tampaknya sekarang benar-benar sekarang disebutHttpPost
sebagai per stackoverflow.com/a/9242394/1338936 - hanya untuk siapa pun yang menemukan jawaban ini seperti yang saya lakukan :)Mengirim permintaan POST mudah di vanilla Java. Dimulai dengan a
URL
, kita perlu mengubahnya menjadiURLConnection
menggunakanurl.openConnection();
. Setelah itu, kita perlu melemparkannya ke aHttpURLConnection
, sehingga kita dapat mengaksessetRequestMethod()
metodenya untuk mengatur metode kita. Kami akhirnya mengatakan bahwa kami akan mengirim data melalui koneksi.Maka kita perlu menyatakan apa yang akan kita kirim:
Mengirim formulir sederhana
POST normal yang berasal dari formulir http memiliki format yang jelas . Kami perlu mengonversi input kami ke format ini:
Kami kemudian dapat melampirkan konten formulir kami ke permintaan http dengan tajuk yang tepat dan mengirimkannya.
Mengirim JSON
Kami juga dapat mengirim json menggunakan java, ini juga mudah:
Ingat bahwa server yang berbeda menerima tipe konten yang berbeda untuk json, lihat pertanyaan ini .
Mengirim file dengan posting java
Mengirim file dapat dianggap lebih sulit untuk ditangani karena formatnya lebih kompleks. Kami juga akan menambahkan dukungan untuk mengirim file sebagai string, karena kami tidak ingin buffer file sepenuhnya ke dalam memori.
Untuk ini, kami mendefinisikan beberapa metode pembantu:
Kami kemudian dapat menggunakan metode ini untuk membuat permintaan pos multi-bagian sebagai berikut:
sumber
out.write(finishBoundaryBytes);
garis perlu?http.connect();
akan melakukan pengiriman POST, bukan?requests.post('http://httpbin.org/post', data = {'key':'value'})
di Python ... Saya baru di Jawa, jadi ini adalah penggunaan kata "mudah" yang sangat aneh bagi saya :)sumber
encode(String)
sudah ditinggalkan. Anda harus menggunakanencode(String, String)
, yang menentukan jenis penyandian. Contoh:encode(rawData, "UTF-8")
.Jawaban pertama sangat bagus, tetapi saya harus menambahkan try / catch untuk menghindari kesalahan kompiler Java.
Juga, saya memiliki masalah untuk mencari cara membaca
HttpResponse
dengan perpustakaan Java.Ini kode yang lebih lengkap:
sumber
e.printStackTrace()
tidak menangani apa pun.Cara sederhana menggunakan Komponen HTTP Apache adalah
Lihatlah API Lancar
sumber
cara paling sederhana untuk mengirim parameter dengan permintaan pos:
Sudah selesai. sekarang kamu bisa menggunakannya
responsePOST
. Dapatkan konten respons sebagai string:sumber
Panggil
HttpURLConnection.setRequestMethod("POST")
danHttpURLConnection.setDoOutput(true);
Sebenarnya hanya yang terakhir diperlukan karena POST kemudian menjadi metode default.sumber
Saya merekomendasikan menggunakan http-request yang dibangun di atas apache http api.
sumber