In questa risposta sto usando un esempio pubblicato da Justin Grammens .
Informazioni su JSON
JSON sta per JavaScript Object Notation. In JavaScript è possibile fare riferimento alle proprietà sia in questo modo object1.name
che in questo modo object['name'];
. L'esempio dell'articolo utilizza questo bit di JSON.
Le parti
Un oggetto fan con email come chiave e foo@bar.com come valore
{
fan:
{
email : 'foo@bar.com'
}
}
Quindi l'equivalente dell'oggetto sarebbe fan.email;
o fan['email'];
. Entrambi avrebbero lo stesso valore di 'foo@bar.com'
.
Informazioni su HttpClient Request
Di seguito è riportato ciò che il nostro autore ha utilizzato per effettuare una richiesta HttpClient . Non pretendo di essere affatto un esperto, quindi se qualcuno ha un modo migliore per esprimere un po 'della terminologia si senta libero.
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);
}
Carta geografica
Se non hai familiarità con la Map
struttura dei dati, dai un'occhiata al riferimento Java Map . In breve, una mappa è simile a un dizionario oa un 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;
}
Sentiti libero di commentare qualsiasi domanda che sorga su questo post o se non ho chiarito qualcosa o se non ho toccato qualcosa su cui sei ancora confuso ... ecc. Qualunque cosa ti venga in mente davvero.
(Eliminerò se Justin Grammens non approva. Ma in caso contrario, ringrazio Justin per essere stato gentile.)
Aggiornare
Sono appena riuscito a ricevere un commento su come utilizzare il codice e mi sono reso conto che c'era un errore nel tipo di ritorno. La firma del metodo era impostata per restituire una stringa ma in questo caso non restituiva nulla. Ho cambiato la firma in HttpResponse e ti rimanderò a questo link su Getting Response Body di HttpResponse
la variabile del percorso è l'URL e l'ho aggiornata per correggere un errore nel codice.