2017-05-19 3 views
0

Ich versuche, json-Datensätze aus der Datenbank abzurufen. Auf Abruf die GET-Anfrage über den Browser ist meine Json Antwort-diese Struktur und die Rückkehr entsprechender DatenWert Verbindung vom Typ java.lang.String kann nicht in JSONObject konvertiert werden, wenn Objekte aus der Datenbank abgerufen werden

[{"name":"OOGOGOGO","address":"OPOPOPOP","gender":"OPOPOPOP","email":"OPOPOPOP","phonenumber":"OPOPOPOP","nationality":"OPOOPOPO","fk":1}] 

Ich rufe die Endpunkt-URL in dem assync Aufgabe doinbackground und dies ist der Endpunkt

url = new URL("http://10.0.2.2:88/example/web/app_dev.php/get/1"); 

die Über dem Endpunkt gibt 405 Statuscode Fehler zurück. Beim Versuch, eine json Ausnahme zu fangen bekomme ich diesen Fehler

error gotten org.json.JSONException: Value Connection of type java.lang.String cannot be converted 

verwirrt darüber, was mit diesem Endpunkt falsch sein könnte, da es eine 200 ok json Antwort von Postbote liefert. Bitte helfen Sie

+0

Welche Methode haben Sie verwendet, um die JSON-Daten deserialisieren? – muazhud

+0

Ich habe gerade diese HttpURLConnection conn initialisiert; URL url = null; in assyntack vor dem Aufrufen des Endpunkts – parker

+0

Aus Ihrer Netzwerkantwort müssen Sie JSONObject erstellen. ZB: neues JSONObject ("Ihre Netzwerkantwort-Zeichenfolge") oder JSONArray. – muazhud

Antwort

1

Hier ist der Code-Ausschnitt.

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Fetch network data 
    new NetworkAsyncTask().execute("http://www.mocky.io/v2/591f32f4110000d10307b4c7"); 
} 

private class NetworkAsyncTask extends AsyncTask<String, Void, String> { 

    protected String doInBackground(String... strings) { 
     try { 
      URL url = new URL(strings[0]); 
      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.connect(); 
      InputStream in = conn.getInputStream(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(in)); 
      StringBuilder stringBuilder = new StringBuilder(); 
      String line; 
      while ((line = reader.readLine()) != null) { 
       stringBuilder.append(line); 
      } 
      return stringBuilder.toString(); 
     } catch (Exception e) { 
      return null; 
     } 
    } 

    protected void onPostExecute(String result) { 
     if (result != null) { 
      Log.d("TAG", "Success! Result: " + result); 
      processResult(result); 
     } else { 
      Log.d("TAG", "Failed, no data"); 
     } 
    } 

    private void processResult(String result) { 
     try { 
      JSONArray jsonArray = new JSONArray(result); 
      JSONObject nameObject = jsonArray.getJSONObject(0); 
      String name = nameObject.optString("name"); 
      Log.d("TAG", "name: " + name); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
} 

Weitere Informationen zu Netzwerken und JSON auf Android, schlage ich vor, lesen Sie diese Anleitung:

https://guides.codepath.com/android/Sending-and-Managing-Network-Requests https://guides.codepath.com/android/Converting-JSON-to-Models

+0

Was ist mit dem Fortschrittsdialog? – parker

+0

Sie können den Fortschrittsdialog erstellen, bevor Sie das Netzwerk aufrufen und stoppen Ergebnis. – muazhud

Verwandte Themen