Volley Post方法MultiParams错误

时间:2017-07-27 12:06:50

标签: java android post android-volley

我正在尝试使用Volley的Post方法,我得到了:com.android.google.volley server error. 我在邮递员中测试了我的api并且它有效。 这是我的代码:

        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= ... 我怎样才能解决这个问题?谢谢。这是我的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

1 个答案:

答案 0 :(得分:0)

好的,您正在发送POST请求,但仍然通过URL添加参数。如果您的服务器从URL获取这些参数,那么您的Volley请求将永远不会起作用,因为重写getParams()仅适用于请求主体内的参数,而不适用于附加到URL的参数。您应该更改服务器获取参数的方式,或者在Android代码中生成一个字符串URL,其中包含所有附加的参数,例如“http :: //myUrl.com/?email = something&amp; name = something” 。对我来说,最合乎逻辑的选择是更改服务器端代码,因为期望带有URL参数的POST请求没有多大意义。 POST请求中的参数应位于请求正文中,