In dieser Antwort verwende ich ein Beispiel von Justin Grammens .
Über JSON
JSON steht für JavaScript Object Notation. In JavaScript - Eigenschaften können beide wie folgt referenziert werden object1.name
und wie diese object['name'];
. Das Beispiel aus dem Artikel verwendet dieses JSON-Bit.
Die Teile
Ein Fanobjekt mit E-Mail als Schlüssel und foo@bar.com als Wert
{
fan:
{
email : 'foo@bar.com'
}
}
Das Objektäquivalent wäre also fan.email;
oder fan['email'];
. Beide hätten den gleichen Wert von 'foo@bar.com'
.
Informationen zur HttpClient-Anforderung
Das Folgende hat unser Autor verwendet, um eine HttpClient-Anfrage zu stellen . Ich behaupte nicht, überhaupt ein Experte zu sein. Wenn also jemand eine bessere Möglichkeit hat, einen Teil der Terminologie zu formulieren, fühlen Sie sich frei.
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);
}
Karte
Wenn Sie mit der Map
Datenstruktur nicht vertraut sind, lesen Sie bitte die Java Map-Referenz . Kurz gesagt, eine Karte ähnelt einem Wörterbuch oder einem 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;
}
Bitte zögern Sie nicht, Fragen zu diesem Beitrag zu kommentieren, oder wenn ich etwas nicht klargestellt habe oder wenn ich etwas nicht berührt habe, über das Sie immer noch verwirrt sind ... usw., was auch immer in Ihrem Kopf auftaucht.
(Ich werde abnehmen, wenn Justin Grammens nicht zustimmt. Aber wenn nicht, dann danke Justin, dass er cool ist.)
Aktualisieren
Ich habe gerade einen Kommentar zur Verwendung des Codes erhalten und festgestellt, dass beim Rückgabetyp ein Fehler aufgetreten ist. Die Methodensignatur wurde so festgelegt, dass eine Zeichenfolge zurückgegeben wird. In diesem Fall wurde jedoch nichts zurückgegeben. Ich habe die Signatur in HttpResponse geändert und verweise auf diesen Link unter Abrufen des Antworttextes von HttpResponse.
Die Pfadvariable ist die URL. Ich habe sie aktualisiert, um einen Fehler im Code zu beheben.