2016-05-09 7 views
1

Meine Android-App verbindet sich mit einem Server und erhalten Informationen aus einer Datenbank und füllt eine Listview. es funktioniert gut mit xampp auf meinem localhost. aber nach dem Hochladen meiner Dateien auf meinen Server funktioniert es nicht. kein Fehler im Protokoll außer.Volley nicht füllen ListView mit Remote-Server

D/Volley: [1] 2.onErrorResponse: ViewGuidesActivity

Aber wenn ich meine PHP Datei auf meiner Web-Browser Daten perfekt es gibt die JSON laufen.

public class ViewGuidesActivity extends AppCompatActivity { 

private static final String TAG = ViewGuidesActivity.class.getSimpleName(); 
private ProgressDialog pDialog; 
private List<Guide> guideList = new ArrayList<Guide>(); 
private ListView listView; 
private CustomListAdapter adapter; 


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

    listView = (ListView) findViewById(R.id.list); 
    adapter = new CustomListAdapter(this, guideList); 
    listView.setAdapter(adapter); 

    pDialog = new ProgressDialog(this); 
    // Showing progress dialog before making http request 
    pDialog.setMessage("Loading..."); 
    pDialog.show(); 

    // Creating volley request obj 
    JsonArrayRequest movieReq = new JsonArrayRequest(AppConfig.URL_GET_GUIDE_LIST, 
      new Response.Listener<JSONArray>() { 
       @Override 
       public void onResponse(JSONArray response) { 
        Log.d(TAG, response.toString()); 
        hidePDialog(); 

        // Parsing json 
        for (int i = 0; i < response.length(); i++) { 
         try { 

          JSONObject obj = response.getJSONObject(i); 
          Guide guide = new Guide(); 
          guide.setNgno(obj.getString("ngno")); 
          guide.setEmail(obj.getString("email")); 
          guide.setName(obj.getString("name")); 


          // adding movie to movies array 
          guideList.add(guide); 

         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 

        } 

        // notifying list adapter about data changes 
        // so that it renders the list view with updated data 
        adapter.notifyDataSetChanged(); 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      VolleyLog.d(TAG, "Error: " + error.getMessage()); 
      hidePDialog(); 

     } 
    }); 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    this.getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    // Adding request to request queue 
    AppController.getInstance().addToRequestQueue(movieReq); 

    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapter, View view, int position, long id) { 
      Guide newGuide = guideList.get(position); 
      String email = newGuide.getEmail(); 
      String ngno = newGuide.getNgno(); 
      //System.out.println(email); 

      Intent i = new Intent(getApplicationContext(), GuideDetails.class); 
      i.putExtra("email", email); 
      i.putExtra("ngno", ngno); 
      startActivity(i); 
     } 
    }); 

} 

Meine PHP-Datei:

$con=mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 
$sql = "select * from guide"; 
$result = mysql_query($sql); 
$json = array(); 

if(mysql_num_rows($result)){ 
     while($row=mysql_fetch_assoc($result)){ 
       $json[]=$row; 
     } 
} 
mysql_close($con); 
echo json_encode($json); 

Ich bin mir bewusst, dass ich ein paar veralteten Methoden bin mit, weil ich zu einem veralteten Tutorial referierte und im im Prozess aller Umwandlung des PHP zu verwendende Dateien mysqli. Aber zuerst musste ich meine App zum Laufen bringen.

Hier ist meine JSON Daten:

http://srilankatouristguides.com/guideList.php

ich die gleiche URL in meinem Code. Was könnte das Problem sein? kann es nicht herausfinden, da es gut funktioniert mit meinem localhost. jede Hilfe würde geschätzt werden.

+0

Überprüfen Sie, ob der db-Benutzername, das Kennwort und der Host korrekt sind oder nicht –

+1

1.Überprüfen Sie, ob die onResponse-Methode das erwartete Ergebnis zurückgibt. 2) Vielleicht post adapter code. – danypata

+0

Bitte zeigen Sie uns, was die Zeile 'Log.d (TAG, response.toString());' druckt - oder dass sie überhaupt gedruckt wird. Wir müssen bestätigen, ob dies die Frage ist, ob Daten nicht vom Server zurückgegeben werden oder ob die Listenansicht nicht aktualisiert wird. – ishmaelMakitla

Antwort

0

Ich habe es geschafft, es zu beheben. Keine Verwendung von mysqli verursachte Konnektivitätsprobleme. Wahrscheinlich verwendet der Server nicht die veralteten Methoden, so dass mein Code nicht funktioniert hat. Nach dem Umwandeln meines PHP Codes zu mysqli funktioniert alles. Danke für die Hinweise Jungs!

Verwandte Themen