2017-07-27 22 views
0

我正在尝试Post方法与使用Volley和我得到:com.android.google.volley server error. 我测试了我的邮递员的API,它的工作原理。 这里是我的代码:排球后方法MultiParams错误

 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); 
     } 
    }); 

通常我用我的API像http://myurl/api/values/Post?film=...&email= ... 我怎样才能解决这个问题?谢谢you.This我API的Post方法代码

[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; 

     } 
    } 

这是我的邮差SS enter image description here

+0

如果您的服务器正在等待POST请求,为什么要发送像“?film = something&email = something”这样的参数?您在发送GET请求时通过URL发送参数,而不是POST。 – FerDensetsu

+0

谢谢你的回答,正如你所说我的服务器期望Post请求,但我用邮递员测试了PARAMS,我必须使用?符号,如果你想我可以把邮递员ss和我把我的API后发方法代码 – omer1596

+0

是的,这将有助于解决问题,因为你的排球代码是好的。 – FerDensetsu

回答

0

OK,你发送一个POST请求,但仍然可以通过URL添加参数。如果您的服务器正在从URL中获取这些参数,那么您的Volley请求将无法工作,因为重写getParams()仅适用于请求正文内的参数,而不适用于附加到URL的参数。你应该改变你的服务器采取参数的方式,或者在你的Android代码中,生成一个字符串URL,并附上所有参数,如“http :: //myUrl.com/?email = something & name = something” 。对我而言,最合理的选择是更改您的服务器端代码,因为在URL中使用参数指定POST请求没有多大意义。 POST请求中的参数应位于请求正文内部,

+0

你是对的,我改变我的api代码,并添加[FromBody]和发布,但stil不工作。我仍然得到同样的错误com.android.google.volley ServerError :(和[FromBody ]是工作,测试 – omer1596

+0

好吧,我解决了问题,但[FromBody]不工作,所以我改变[FromUri]而不是[FromBody]。现在的代码工作,谢谢你的帮助 – omer1596