Saya mencoba melakukan POST dengan HttpURLConnection
(saya harus menggunakannya dengan cara ini, tidak bisa menggunakan HttpPost
) dan saya ingin menambahkan parameter ke koneksi itu seperti
post.setEntity(new UrlEncodedFormEntity(nvp));
dimana
nvp = new ArrayList<NameValuePair>();
memiliki beberapa data yang tersimpan. Saya tidak dapat menemukan cara bagaimana menambahkan ini ArrayList
ke saya HttpURLConnection
yang ada di sini:
HttpsURLConnection https = (HttpsURLConnection) url.openConnection();
https.setHostnameVerifier(DO_NOT_VERIFY);
http = https;
http.setRequestMethod("POST");
http.setDoInput(true);
http.setDoOutput(true);
Alasan untuk kombinasi https dan http yang aneh adalah perlunya untuk tidak memverifikasi sertifikat. Itu bukan masalah, meskipun, itu memposting server dengan baik. Tapi saya perlu memposting dengan argumen.
Ada ide?
Penafian Duplikat:
Kembali pada tahun 2012, saya tidak tahu bagaimana parameter dimasukkan ke dalam permintaan HTTP POST . Saya berpegang pada NameValuePair
karena itu dalam tutorial. Pertanyaan ini mungkin tampak seperti duplikat, namun pada 2012 saya membaca bahwa pertanyaan lain dan TIDAK digunakan NameValuePair
. Faktanya, itu tidak menyelesaikan masalah saya.
Jawaban:
Anda bisa mendapatkan aliran output untuk koneksi dan menulis string kueri parameter untuk itu.
...
sumber
URL url = new URL("http://yoururl.com?k1=v1&k2=v2&···&kn=vn");
kemudian ketika mengatur samb untuk menggunakan metode POST tidak perlu menuliskannya.Karena NameValuePair sudah usang. Memikirkan berbagi kode saya
....
sumber
""result""
?OutputStream os = conn.getOutputStream();
pada jelly bean mengenai tidak ada alamat yang terkait dengan nama host?Jika Anda tidak memerlukan
ArrayList<NameValuePair>
parameter for, ini adalah solusi yang lebih pendek yang membuat string kueri menggunakanUri.Builder
kelas:sumber
Salah satu solusinya adalah membuat string params Anda sendiri.
Ini adalah metode aktual yang saya gunakan untuk proyek terbaru saya. Anda perlu mengubah args dari hashtable ke namevaluepair's:
POSTING params:
sumber
Saya pikir saya menemukan apa yang Anda butuhkan. Ini dapat membantu orang lain.
Anda dapat menggunakan metode UrlEncodedFormEntity.writeTo (OutputStream) .
sumber
Jawaban yang diterima melempar ProtocolException di:
OutputStream os = conn.getOutputStream();
karena tidak mengaktifkan output untuk objek URLConnection. Solusinya harus mencakup ini:
conn.setDoOutput(true);
untuk membuatnya bekerja.
sumber
Jika belum terlambat, saya ingin membagikan kode saya
Utils.java:
MainActivity.java:
sumber
Ada pendekatan yang jauh lebih mudah menggunakan PrintWriter (lihat di sini )
Pada dasarnya yang Anda butuhkan adalah:
sumber
AsyncTask
untuk mengirim dataJSONObect
melaluiPOST
Metodesumber
Coba ini:
Anda dapat menambahkan sebanyak yang
nameValuePairs
Anda butuhkan. Dan jangan lupa menyebutkan hitungan dalam daftar.sumber
How to add parameters to HttpURLConnection using POST
- Ini menyesatkan.Untuk memanggil metode POST / PUT / DELETE / GET Restful dengan data header atau json khusus, kelas Async berikut dapat digunakan
Dan Penggunaannya adalah
sumber
Dengan menggunakan org.apache.http.client.HttpClient juga Anda dapat dengan mudah melakukan ini dengan cara yang lebih mudah dibaca seperti di bawah ini.
Dalam mencoba menangkap Anda dapat memasukkan
sumber
Dalam kasus saya, saya telah membuat fungsi seperti ini untuk membuat permintaan Post yang mengambil url String dan hashmap parameter
sumber
Saya menggunakan sesuatu seperti ini:
sumber
ini adalah bagaimana saya melewati "params" (JSONObject) melalui POST
sumber