Bu cevapta Justin Grammens tarafından yayınlanan bir örnek kullanıyorum .
JSON hakkında
JSON, JavaScript Object Notation anlamına gelir. JavaScript'inizde özellikler böyle hem başvurulabilir object1.name
ve bunun gibi object['name'];
. Makaledeki örnek bu JSON parçasını kullanır.
Parçalar
Anahtar olarak e-posta ve değer olarak foo@bar.com olan bir hayran nesnesi
{
fan:
{
email : 'foo@bar.com'
}
}
Yani nesne eşdeğeri fan.email;
veya olacaktır fan['email'];
. Her ikisi de aynı değere sahip olacaktır 'foo@bar.com'
.
HttpClient İsteği Hakkında
Aşağıdaki, yazarımızın bir HttpClient İsteği yapmak için kullandığı şeydir . Tüm bu konularda uzman olduğumu iddia etmiyorum, bu yüzden eğer herhangi biri terminolojinin bir kısmını daha iyi bir şekilde ifade edebiliyorsa, kendinizi özgür hissedin.
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);
}
Harita
Map
Veri yapısına aşina değilseniz, lütfen Java Haritası referansına bir göz atın . Kısacası, bir harita bir sözlüğe veya bir hash'e benzer.
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;
}
Lütfen bu gönderi hakkında ortaya çıkan herhangi bir soru hakkında yorum yapmaktan çekinmeyin veya bir şeyi netleştirmediysem veya hala kafanızın karıştığı bir şeye değinmediysem ... vs gerçekten kafanızda ne olursa olsun.
(Justin Grammens onaylamazsa indiririm. Ama değilse o zaman Justin'e soğukkanlı davrandığı için teşekkür ederim.)
Güncelleme
Kodun nasıl kullanılacağına dair bir yorum almaktan mutluluk duydum ve dönüş türünde bir hata olduğunu fark ettim. Yöntem imzası bir dize döndürecek şekilde ayarlandı, ancak bu durumda hiçbir şey döndürmedi. İmzayı HttpResponse olarak değiştirdim ve sizi HttpResponse'un Yanıt Gövdesi'ndeki bu bağlantıya yönlendireceğim
, yol değişkeni url'dir ve koddaki bir hatayı düzeltmek için güncelledim.