如何使用API解决POST数据时的意外响应代码400



由于我无法使用此api发布数据,我得到了400的响应代码,所以你能帮我摆脱困境吗这是我的活动

String BASE_URL = "http://74.207.233.160/api/v1/users";
StringRequest stringRequest = new StringRequest(Request.Method.POST, BASE_URL,new Response.Listener<String>() {
@Override
public void onResponse(String response) {
progressBar.setVisibility(View.GONE);
Log.d("SignupActivity", "onResponse" +response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(SignupActivity.this, "Error.......", Toast.LENGTH_SHORT).show();
error.printStackTrace();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("email", email);
params.put("password", password);
params.put("role", role);
return params;
}
};
MySingleTon.getInstance(SignupActivity.this).addToRequestQueue(stringRequest);

这是我的SingleTon级

public class MySingleTon {
private static MySingleTon mInstance;
private RequestQueue requestQueue;
private static Context mCtx;
private MySingleTon(Context context){
mCtx = context;
requestQueue = getRequestQueue();
}
public static synchronized MySingleTon getInstance(Context context){
if (mInstance == null){
mInstance = new MySingleTon(context);
}
return mInstance;
}
public RequestQueue getRequestQueue() {
if (requestQueue == null){
requestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
}
return  requestQueue;
}
public void addToRequestQueue(Request request){
requestQueue.add(request);
}
}

以下是错误的详细信息

E/Volley: [4370] BasicNetwork.performRequest: Unexpected response code 400 for http://74.207.233.160/api/v1/users

这是我的邮差屏幕截图邮递员邮寄数据从上面的邮递员,如果我使用用户〔电子邮件〕,我得到的响应代码500

Attached Postman屏幕截图使用标头来提供键值对。在您的示例中,您正在重写getParams方法,实际上您正在对URL:进行POST请求

http://74.207.233.160/api/v1/users?email=youremail&password=yourpassword&role=yourrole;

如果我理解正确,你应该重写getHeaders方法。

编辑:根据注释,您需要的是请求正文中的JSON字符串。要设置适当的请求头,请使用JsonBodyRequest类:

import com.android.volley.toolbox.JsonObjectRequest;
import org.json.JSONObject;
...
JSONObject body = new JSONObject();
body.put("email", "youremail");
body.put("role", "yourrole");
final String requestBody = body.toString();
String BASE_URL = "http://74.207.233.160/api/v1/users";
StringRequest stringRequest = new JsonObjectRequest(Request.Method.POST, BASE_URL,new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
progressBar.setVisibility(View.GONE);
Log.d("SignupActivity", "onResponse" + String.valueOf(response));
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(SignupActivity.this, "Error.......", Toast.LENGTH_SHORT).show();
error.printStackTrace();
}
}){
@Override
public byte[] getBody() {
// Here you provide the body from the previously stringified JSON object
return requestBody.getBytes("utf-8");
}
};

相关内容

最新更新