Volley не работает с SOAP API в Android - PullRequest
0 голосов
/ 03 июля 2019

Привет. Все, что я использую Volley и пытаюсь проанализировать данные из SOAP API. Ниже приведен мой фрагмент кода, когда я пытаюсь проанализировать данные, он выдает ошибку. Кто-нибудь может мне с этим помочь? Я получаю следующую ошибку каждый раз.

E / Volley: [7440] BasicNetwork.performRequest: Неожиданный ответ код 400 для

 public void HttpPOSTRequestWithParam() {
        RequestQueue queue = Volley.newRequestQueue(this);
        String url = "https://www.myweb.co.ke/Wt/webtask.asmx?op=GetProductListing";
        StringRequest postRequest = new StringRequest(Request.Method.POST, url,
                new Response.Listener<String>()
                {
                    @Override
                    public void onResponse(String response) {
                        Log.e("Response", response);
                    }
                },
                new Response.ErrorListener()
                {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.e("ERROR","error => "+error.toString());
                    }
                }
        ) {

            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();

                params.put("UserName", "John");



                return params;
            }

            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> params = new HashMap<String, String>();


                params.put("User Name", "1234");
                params.put("Password", "4321");




                return params;
            }
        };
        queue.add(postRequest);}

1 Ответ

0 голосов
/ 03 июля 2019

Вам может потребоваться указать, как кодируются заголовки Content-Type и Accept.Здесь строка параметра должна выглядеть следующим образом: 'grant_type = пароль & имя пользователя = apikey & password = apipassword'

    @Override
    protected Map<String, String> getParams() 
    {  
            Map<String, String>  params = new HashMap<String, String>();  
            params.put("grant_type", "password");
            params.put("username", "apikey");
            params.put("password", "apipassword");

            return params;  
    }

   @Override
   public Map<String, String> getHeaders() throws AuthFailureError {
       HashMap<String, String> headers = new HashMap<String, String>();
            headers.put("Accept", "application/x-www-form-urlencoded; charset=UTF-8");
            headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
       return headers;
   }
...