2016-01-09 5 views

Antwort

10

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"); 
} 
+3

Wo finde ich den HttpClient? Welches Paket muss ich hinzufügen? – Tarion

+2

@Tarion fügen Sie einfach 'useLibrary 'org.apache.http.legacy'' in Ihrer Build.gradle-Datei auf App-Ebene in' android' hinzu Block über 'defaultConfig'. –

0
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(); 
     } 
24

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(); 
} 
+2

Nizza Lösung nutzen können, benötigt keinen Apache HTTP Client! – Jlange

+0

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". –

4

I Think Volley ist die beste Wahl dafür.

sehen diese post und diese post