Как разрешить неожиданный код ответа 400 во время POST-данных с использованием API с библиотекой залпа - PullRequest
0 голосов
/ 12 декабря 2018

Поскольку я не могу опубликовать данные с помощью этого API.Я получаю код ответа 400, так что вы можете помочь мне выбраться из этого.

Это моя деятельность

String BASE_URL = "http://74.207.233.160/api/v1/users";
try {
                    JSONObject body = new JSONObject();
                    body.put("email", email);
                    body.put("password", password);
                    body.put("role", role);

                    final String requestBody = body.toString();

                    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" + 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() throws AuthFailureError {

                            try {
                                return requestBody.getBytes("utf-8");
                            } catch (UnsupportedEncodingException e) {
                                e.printStackTrace();
                                return null;
                            }
                        }
                    };

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

Вот подробности ошибки

12-12 17: 00: 56.206 13835-14349 / oakridgebs.com.flexijob I / System.out: [сокет] [/ 10.162.143.245:37838] подключен [OkHttp] sendRequest >> 12-12 17: 00: 56.207 13835-14349 / oakridgebs.com.flexijob I / System.out:[OkHttp] sendRequest << 12-12 17: 00: 57.096 13835-14349 / oakridgebs.com.flexijob E / Volley: [2174] BasicNetwork.performRequest: непредвиденный код ответа 400 для <a href="http://74.207.233.160/api/v1/users" rel="nofollow noreferrer">http://74.207.233.160/api/v1/users 12-12 17:00: 57.123 13835-13835 / oakridgebs.com.flexijob W / System.err: com.android.volley.ClientError at com.android.volley.toolbox.BasicNetwork.performRequest (BasicNetwork.java:199) 12-12 17:00: 57.123 13835-13835 / oakridgebs.com.flexijob W / System.err: на com.android.volley.NetworkDispatcher.processRequest (NetworkDispatcher.java:131) на com.android.volley.NetworkDispatcher.processRequest (NetworkDispatcher.java:111) на com.android.volley.NetworkDispatcher.run (NetworkDispatcher.java:90) 12-12 17: 00: 57.134 13835-13835 / oakridgebs.com.flexijob D / ViewRootImpl: аппаратное ускорениевключено, это = ViewRoot {a22a09 Toast, ident = 2} 12-12 17: 00: 57.177 13835-13876 / oakridgebs.com.flexijob D / mali_winsys: new_window_surface возвращает 0x3000 12-12 17: 01: 12.371 13835-13876 /oakridgebs.com.flexijob W / MALI: glDrawArrays: 770: [MALI] glDrawArrays занимает здесь более 5 мс.Общее время (нас): 6950 12-12 17: 01: 54.101 13835-13876 / oakridgebs.com.flexijob W / MALI: glDrawArrays: 770: [MALI] glDrawArrays занимает здесь более 5 мс.Общее время прохождения (нас): 8209 12-12 17: 01: 59,890 13835-13835 / oakridgebs.com.flexijob I / InputMethodManager: [startInputInner] EditorInfo {packageName = oakridgebs.com.flexijob, inputType = 0x81, imeOptions = 0x4001006,privateImeOptions = null}, windowGainingFocus = null, mServedView = android.support.v7.widget.AppCompatEditText {290b673e VFED..CL .F.Представлениеflexijob / oakridgebs.com.flexijob.SignupActivity}} 12-12 17: 01: 59.934 13835-13835 / oakridgebs.com.flexijob D / ActivityThread: ACT-PAUSE_ACTIVITY обработано: 0 / android.os.BinderProxy@38cb8063

Я не могу опубликовать данные, так как они показывают ответ 400 при запуске кода.Не могли бы вы решить это?

Here is my Postman

1 Ответ

0 голосов
/ 12 декабря 2018

Вы знакомы с анатомией HTTP-запроса?Ошибка 400 обычно возвращается из неполного запроса.Я обычно сталкиваюсь с ошибками при выполнении запросов с помощью curl или Telnet, когда мне не хватает поля Host.Убедитесь, что после вашей стартовой строки есть что-то вроде Host: example.com .Это требование HTTP 1.1.

Если вы продолжаете сталкиваться с ошибками, я бы сделал перехват пакетов Wireshark и посмотрел бы, как выглядят HTTP-пакеты.Это может помочь вам определить, есть ли в запросе пропущенное поле Host.

...