2017-07-27 4 views
0

Ich versuchte Post-Methode mit Volley und ich bekam: com.android.google.volley server error. Ich testete meine API in Postbote und es funktioniert. Hier ist mein Code:Volley Post Methode MultiParams Fehler

 StringRequest request=new StringRequest(Request.Method.POST, url, new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        Log.d("Response", response); 

       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        VolleyLog.e("Error :",error.getMessage()); 
       } 
      }) { 
       @Override 
       public Map<String, String> getParams() { 
        Map<String, String> params = new HashMap<String, String>(); 


        params.put("name", film.toString()); 
        params.put("email", spin.toString()); 
        params.put("password", spin_iki.toString()); 
        params.put("address", spin_uc.toString()); 
        params.put("brand", name.toString()); 

        return params; 

       } 
      }; 

      RequestQueue queue= Volley.newRequestQueue(film.this); 
      queue.add(request); 
     } 
    }); 

Normalerweise benutze ich meine api wie http://myurl/api/values/Post?film=...&email= ... Wie kann ich dieses Problem beheben? Vielen you.This meine API Post-Methode Code

[HttpPost] 
    public int Post_film(string name, string email, string password, string address, string brand) 
    { 
     using (var context = new Entities()) 
     { 


      db_table nesne = new db_table(); 
      nesne.name =name; 
      nesne.email = email; 
      nesne.password = password; 
      nesne.address = address; 
      nesne.brand = brand; 
      context.db_table.Add(nesne); 


      int i = context.SaveChanges(); 
      return i; 

     } 
    } 

dies mein Postbote SS enter image description here

+0

Wenn Ihr Server eine POST-Anfrage erwartet, warum würden Sie die Parameter wie "? Film = etwas & email = etwas" senden? Sie senden die Parameter über die URL, wenn Sie GET-Anfragen stellen, nicht POST. – FerDensetsu

+0

Vielen Dank für die Antwort, wie Sie sagten mein Server erwarten Post-Anfrage, aber ich testete im Postboten mit Params und ich muss verwenden? Symbol, wenn Sie wollen, kann ich Postbote ss setzen und ich legte meine API-Methode Methode Code – omer1596

+0

Ja, das würde helfen, das Problem zu lösen, da Ihr Volley-Code in Ordnung ist. – FerDensetsu

Antwort

0

OK, sind Sie eine POST-Anforderung zu senden, aber immer noch Parameter via URL hinzufügen. Wenn Ihr Server diese Parameter von der URL übernimmt, funktioniert Ihre Volley-Anfrage nie, da das Überschreiben von getParams() nur für Parameter innerhalb des Anfrage-Body funktioniert, nicht für Parameter, die an die URL angehängt sind. Sie sollten entweder die Art ändern, wie Ihr Server die Parameter übernimmt, oder in Ihrem Android-Code eine String-URL mit allen Parametern erzeugen, die an sie angehängt sind, wie "http://myUrl.com/?email=something=& name = irgendwas". . Für mich ist die logischste Option, den serverseitigen Code zu ändern, da es nicht sinnvoll ist, eine POST-Anfrage mit Parametern in der URL zu erwarten. Parameter in POST-Anfragen sollten innerhalb des Anfragekörpers sein,

+0

Sie haben Recht, ich ändere meine API-Code und hinzugefügt [FromBody] und veröffentlicht, aber Stil funktioniert nicht.Ich bekomme immer noch den gleichen Fehler com.android.google.volley ServerError :(und [FromBody ] ist funktioniert, getestet – omer1596

+0

Ok, ich löste Problem, aber [FromBody] funktioniert nicht, also änderte ich [FromUri] anstelle von [FromBody]. Jetzt funktionieren Codes, danke für Ihre Hilfe – omer1596