2017-02-01 3 views
0

Ich erstelle eine Android-App mit der Google Volley Api, die die Verbindung zwischen meiner App und meinem PHP-Skript behandelt. Aus irgendeinem Grund sendet die App keine Daten an meinen Server, vielleicht kann jemand hier herausfinden?Android Volley Beitrag Anfrage funktioniert nicht

Meine getParams() Methode wird korrekt aufgerufen, aber wenn ich versuche, es zu drucken, gibt es null zurück! Alles funktioniert tatsächlich, mit Ausnahme, dass die Daten nicht korrekt übergeben wird glaube ich, da mein PHP-Skript Variablen beschwert sich über die null sind

public class Server_interaction 
{ 
    String server_url = "http://xxxxxx/update_location.php"; //hidden from you ;) 
String response_string; 
RequestQueue queue; 
Context context; 

public Server_interaction(Context context) 
{ 
    this.context = context; 
    queue = Server_singleton.getInstance(context).getRequestQueue(); 
} 


public static final String TAG = Server_interaction.class.getSimpleName(); 

public void post_request(final VolleyCallback callback) 
{ 
    StringRequest stringRequest = new StringRequest(Request.Method.POST, server_url, 
      new Response.Listener<String>() 
      { 
       @Override 
       public void onResponse(String response) 
       { 
        response_string = response; 
        callback.onSuccess(response_string); 
        //requestQueue.stop(); 
        Log.i(TAG, "the response is: "+ response_string); 

       } 
      } 
      , new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error){ 
        response_string = "Something went wrong"; 
        //error.printstacktrace() 
        //requestQueue.stop(); 
        Log.i(TAG, "something went wrong. Is the server up and running?"); 
       } 

      }) 
    { 
     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 

      String the_name = "olaf"; 
      String the_mail = "lalalal"; 
      String the_country = "Norway"; 
      String the_latitude = "33"; 
      String the_longitude = "99"; 


      Map<String, String> params = new HashMap<String, String>(); 
      params.put("name", the_name); 
      params.put("email", the_mail); 
      params.put("country", the_country); 
      params.put("latitude", String.valueOf(the_latitude)); 
      params.put("longitude", String.valueOf(the_longitude)); 

      Log.i(TAG, "inside getparams : "+ super.getParams()); 
      return super.getParams(); 
     } 
    };//stringrequest parameter end 

    //add request to requestqueue 
    Server_singleton.getInstance(context).addToRequestQueue(stringRequest); 
    Log.i(TAG, "the response again:: "+ response_string); 


} 

} 
+0

Legen Sie wichtige Informationen wie die getParams in der ursprünglichen Frage. Ohne dass es sich anhört, als würde Ihre Anforderungswarteschlange nicht ausgeführt werden, was bedeutet, dass Sie start() nicht aufrufen konnten. –

+0

Ich nenne eine Singleton-Klasse, ich glaube, es ist alles richtig gemacht. Jedoch mein PHP-Server-Side-Skript erhält leere (Null) Werte, und das sollten die getparams.put-Methoden verhindern? Sollten sie nicht? – p3ob2lem

+0

Irgendeine Idee Gabe ?? – p3ob2lem

Antwort

1
Map<String, String> params = new HashMap<String, String>(); 
    params.put("name", the_name); 
    params.put("email", the_mail); 
    params.put("country", the_country); 
    params.put("latitude", String.valueOf(the_latitude)); 
    params.put("longitude", String.valueOf(the_longitude)); 

    Log.i(TAG, "inside getparams : "+ super.getParams()); 
    return super.getParams(); 

Du fügst alle params, dann bist du sie zu ignorieren und ruft super.getParams auf. Sie möchten entweder params anstelle von super.getParams() zurückgeben oder die beiden Ergebnisse zusammenführen. Da Ihr Elternteil nur StringRequest ist, können Sie hier einfach Parameter zurückgeben (StringRequest fügt keine eigenen hinzu).

+0

Danke, aber jetzt bekomme ich einen großen Fehler und meine App stürzt ab! Scheint so, als ob meine Params-Methode tausende Male aufgerufen wird, bevor sie abstürzt. Produziert einen riesigen Stacktrace, das ist das erste Bit: FATALE AUSNAHME: Thread-166 Prozess: com.example.koenraad.Exentia, PID: 7288 java.lang.StackOverflowError: – p3ob2lem

+0

Klingt wie Sie es falsch codiert und ging in unendliche rekursive Schleife . Da Sie jedoch keinen neuen Code oder den vollständigen Fehler gepostet haben, kann ich Ihnen nicht sagen, wie Sie ihn beheben können. Aber meine Vermutung ist, dass Sie return getParams() anstelle von return params geschrieben haben; –

+0

Ich bin so ein Idiot. Haha richtig. Seltsamerweise beklagt sich meine php Server Seite immer noch darüber, die Daten nicht zu erhalten. Die Daten sind nur null/falsch. Ich finde es sehr merkwürdig, da die Strings so hart codiert sind, bevor ich sie in der .put-Methode verwende. Jetzt params enthält die richtigen Werte, und sie werden immer noch nicht richtig gebucht? – p3ob2lem

0

Versuchen Sie Ihren Code, dies zu ändern:

StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL, new Response.Listener<String>() { 
      @Override 
      public void onResponse(String s) { 
       Toast.makeText(ReserveProperty.this, s, Toast.LENGTH_SHORT); 



      } 
     }, new Response.ErrorListener(){ 

      @Override 
      public void onErrorResponse(VolleyError volleyError) { 
       Toast.makeText(ReserveProperty.this, volleyError.toString(),Toast.LENGTH_LONG).show(); 

      } 
     }){ 
      protected Map<String,String> getParams() 
      { 
        String the_name = "olaf"; 
     String the_mail = "lalalal"; 
     String the_country = "Norway"; 
     String the_latitude = "33"; 
     String the_longitude = "99"; 


     Map<String, String> params = new HashMap<String, String>(); 
     params.put("name", the_name); 
     params.put("email", the_mail); 
     params.put("country", the_country); 
     params.put("latitude", String.valueOf(the_latitude)); 
     params.put("longitude", String.valueOf(the_longitude)); 

       return params; 


      } 
     }; 


     Volley.newRequestQueue(this).add(stringRequest); 



    } 
+0

Danke, aber nachdem ich dies getan habe, sendet es immer noch keine korrekten Daten an mein PHP-Skript. Der PHP bekommt nichts (oder null?). – p3ob2lem

+0

Ok vielleicht gebe ich dir meine PHP-Mscript und Sie ändern abit –

+0

Sicher? Wo kannst du es geben? – p3ob2lem

Verwandte Themen