Ich möchte eine Android-App für meine Wordpress-Website mit wp-api Plugin erstellen. Wie kann ich HttpRequest (GET) senden und Antwort in Json erhalten?wie HttpRequest senden und JSON Antwort in Android erhalten?
Antwort
Versuchen unter Code zu erhalten json von einer URL
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget= new HttpGet(URL);
HttpResponse response = httpclient.execute(httpget);
if(response.getStatusLine().getStatusCode()==200){
String server_response = EntityUtils.toString(response.getEntity());
Log.i("Server response", server_response);
} else {
Log.i("Server response", "Failed to get server response");
}
Wo finde ich den HttpClient? Welches Paket muss ich hinzufügen? – Tarion
@Tarion fügen Sie einfach 'useLibrary 'org.apache.http.legacy'' in Ihrer Build.gradle-Datei auf App-Ebene in' android' hinzu Block über 'defaultConfig'. –
try {
String line, newjson = "";
URL urls = new URL(url);
try (BufferedReader reader = new BufferedReader(new InputStreamReader(urls.openStream(), "UTF-8"))) {
while ((line = reader.readLine()) != null) {
newjson += line;
// System.out.println(line);
}
// System.out.println(newjson);
String json = newjson.toString();
JSONObject jObj = new JSONObject(json);
}
} catch (Exception e) {
e.printStackTrace();
}
Verwenden Sie diese Funktion, um JSON von URL zu erhalten.
public static JSONObject getJSONObjectFromURL(String urlString) throws IOException, JSONException {
HttpURLConnection urlConnection = null;
URL url = new URL(urlString);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setReadTimeout(10000 /* milliseconds */);
urlConnection.setConnectTimeout(15000 /* milliseconds */);
urlConnection.setDoOutput(true);
urlConnection.connect();
BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
br.close();
String jsonString = sb.toString();
System.out.println("JSON: " + jsonString);
return new JSONObject(jsonString);
}
Vergessen Sie nicht, Internet Erlaubnis in Ihrem Manifest
<uses-permission android:name="android.permission.INTERNET" />
Dann nutzen Sie es wie folgt hinzuzufügen:
try{
JSONObject jsonObject = getJSONObjectFromURL(urlString);
//
// Parse your json here
//
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
Nizza Lösung nutzen können, benötigt keinen Apache HTTP Client! – Jlange
Mindestens zwei große Fehler hier. 1. 'urlConnection.setDoOutput (true);' Ändert die Anfrage in 'POST'-Methode. 2. Es führt effektiv zwei Anfragen aus, 'new InputStreamReader (url.openStream()' öffnet 'URL' noch einmal, abgesehen von 'urlConnection' und all seinen Eigenschaften. 3.' sb.append (line + "\ n") ' Konstruiert einen Überschuss "String". –
http://developer.android.com/training/volley/index.html –
Sie diese http://stackoverflow.com/a/8655039 – user1140237