Chcę zbudować aplikację na Androida dla mojej strony z wordpress za pomocą wtyczki wp-api. jak mogę wysłać HttpRequest (GET) i odpowiedź odpowiedzi w Json?jak wysłać HttpRequest i uzyskać odpowiedź Json w systemie Android?
Odpowiedz
Spróbuj poniżej kod, aby uzyskać json z 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");
}
Gdzie znaleźć HttpClient? Który pakiet mam dołączyć? – Tarion
@ Tarion wystarczy dodać' useLibrary 'org.apache.http.legacy'' w pliku build.gradle poziomu aplikacji w 'android' blok powyżej '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();
}
Użyj tej funkcji, aby uzyskać JSON z adresu URL.
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);
}
Nie zapomnij dodać uprawnienie do Internetu w swoim oczywistym
<uses-permission android:name="android.permission.INTERNET" />
następnie używać go tak:
try{
JSONObject jsonObject = getJSONObjectFromURL(urlString);
//
// Parse your json here
//
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
Nicea rozwiązanie, nie wymaga importowania klienta HTTP apache! – Jlange
Co najmniej dwa główne błędy tutaj. 1. 'urlConnection.setDoOutput (true);' zmienia żądanie do metody 'POST'. 2. Skutecznie wykonuje dwa żądania, 'new InputStreamReader (url.openStream()' otwiera 'url' raz jeszcze, pomijając' urlConnection' i wszystkie jego właściwości. 3. 'sb.append (line +" \ n ")' konstruuje nadmiar 'String'. –
http://developer.android.com/training/volley/index.html –
można użyć tej http://stackoverflow.com/a/8655039 – user1140237