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