Dalam jawaban ini saya menggunakan contoh yang diposting oleh Justin Grammens .
Tentang JSON
JSON adalah singkatan dari JavaScript Object Notation. Dalam properti JavaScript dapat direferensikan seperti ini object1.name
dan seperti ini object['name'];
. Contoh dari artikel menggunakan bit JSON ini.
Objek Fan Parts A dengan email sebagai kunci dan foo@bar.com sebagai nilai
{
fan:
{
email : 'foo@bar.com'
}
}
Jadi, ekuivalen objeknya adalah fan.email;
atau fan['email'];
. Keduanya akan memiliki nilai yang sama 'foo@bar.com'
.
Tentang Permintaan HttpClient
Berikut ini adalah apa yang penulis kami gunakan untuk membuat Permintaan HttpClient . Saya tidak mengklaim sebagai ahli dalam semua ini jadi jika ada yang memiliki cara yang lebih baik untuk mengatakan beberapa terminologi, silakan.
public static HttpResponse makeRequest(String path, Map params) throws Exception
{
//instantiates httpclient to make request
DefaultHttpClient httpclient = new DefaultHttpClient();
//url with the post data
HttpPost httpost = new HttpPost(path);
//convert parameters into JSON object
JSONObject holder = getJsonObjectFromMap(params);
//passes the results to a string builder/entity
StringEntity se = new StringEntity(holder.toString());
//sets the post request as the resulting string
httpost.setEntity(se);
//sets a request header so the page receving the request
//will know what to do with it
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
//Handles what is returned from the page
ResponseHandler responseHandler = new BasicResponseHandler();
return httpclient.execute(httpost, responseHandler);
}
Peta
Jika Anda tidak terbiasa dengan Map
struktur datanya, silakan lihat referensi Peta Jawa . Singkatnya, peta mirip dengan kamus atau hash.
private static JSONObject getJsonObjectFromMap(Map params) throws JSONException {
//all the passed parameters from the post request
//iterator used to loop through all the parameters
//passed in the post request
Iterator iter = params.entrySet().iterator();
//Stores JSON
JSONObject holder = new JSONObject();
//using the earlier example your first entry would get email
//and the inner while would get the value which would be 'foo@bar.com'
//{ fan: { email : 'foo@bar.com' } }
//While there is another entry
while (iter.hasNext())
{
//gets an entry in the params
Map.Entry pairs = (Map.Entry)iter.next();
//creates a key for Map
String key = (String)pairs.getKey();
//Create a new map
Map m = (Map)pairs.getValue();
//object for storing Json
JSONObject data = new JSONObject();
//gets the value
Iterator iter2 = m.entrySet().iterator();
while (iter2.hasNext())
{
Map.Entry pairs2 = (Map.Entry)iter2.next();
data.put((String)pairs2.getKey(), (String)pairs2.getValue());
}
//puts email and 'foo@bar.com' together in map
holder.put(key, data);
}
return holder;
}
Silakan mengomentari setiap pertanyaan yang muncul tentang posting ini atau jika saya belum menjelaskan sesuatu atau jika saya belum menyentuh sesuatu yang Anda masih bingung ... dll apa pun yang muncul di kepala Anda sungguh.
(Saya akan menghapusnya jika Justin Grammens tidak menyetujuinya. Tetapi jika tidak, terima kasih Justin karena telah bersikap dingin tentang hal itu.)
Memperbarui
Saya baru saja mendapat komentar tentang cara menggunakan kode dan menyadari bahwa ada kesalahan dalam tipe pengembalian. Tanda tangan metode disetel untuk mengembalikan string tetapi dalam kasus ini tidak mengembalikan apa pun. Saya mengubah tanda tangan menjadi HttpResponse dan akan mengarahkan Anda ke tautan ini di Mendapatkan Tubuh Tanggapan HttpResponse
variabel jalur adalah url dan saya memperbarui untuk memperbaiki kesalahan dalam kode.