"ошибка": "unsupported_grant_type" - залп - PullRequest
0 голосов
/ 26 апреля 2018

Я использую библиотеку залпа для выполнения метода POST.

Я отправляю имя пользователя, пароль и grant_type как параметры JsonObjectRequest, но я Но я получаю следующую ошибку: «error: unsupported_grant_type».

Попробовал, но не могу понять, где я ошибаюсь.

Как я могу решить это?

Вот мой код:

Котлин

val url: String = "http://192.168.254.80/MpDS/api/token"
val params = HashMap<String, String>()


override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    /*LOGIN BUTTON*/
    BLogin = findViewById(R.id.LoginButton)
    BLogin?.setOnClickListener(this)
}

fun login() {

    params.put("UserName", userTxt.toString())
    params.put("Password", passTxt.toString())
    params.put("grant_type", "password")

    val queue = Volley.newRequestQueue(this@MainActivity)
    val response: String? = null

    val req = JsonObjectRequest(url, JSONObject(params),
            Response.Listener { response ->
                try {
                    VolleyLog.v("Response:%n %s", response.toString(4))
                    textView.text = "work!"
                } catch (e: JSONException) {
                    e.printStackTrace()
                }
            }, Response.ErrorListener {
                error -> VolleyLog.e("Error: ", error.message

            )
    })

    fun getHeaders(): Map<String, String> {

        val headers = HashMap<String, String>()
        headers.put("Content-Type", "application/x-www-form-urlencoded")
        return headers
    }

    queue.add(req)

}

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Я не могу добавлять комментарии, потому что моя репутация не позволяет этого :( Так что это ссылка на ответ: Вызов WebAPI с использованием залпа

и это реализация в моем проекте Android для получения токена (я использую веб-API Asp.net с Owin)

 public void GetToken(final UserAccount userAccount)
{

    String url = "http://localhost:8081/token";

    StringRequest postRequest = new StringRequest(Request.Method.POST, url,
            new Response.Listener<String>()
            {
                @Override
                public void onResponse(String response) {
                    // response
                    Log.e("TOKEN_AUTH", response);
                }
            },
            new Response.ErrorListener()
            {
                @Override
                public void onErrorResponse(VolleyError error) {
                    // error
                    Log.e("KL", error.networkResponse.toString());
                }
            }
    ) {
        @Override
        public String getBodyContentType() {
            return "application/x-www-form-urlencoded";
        }

        @Override
        protected Map<String, String> getParams()
        {
            Map<String, String>  params = new HashMap<String, String> ();
            params.put("grant_type", "password");
            params.put("username", userAccount.getEmail());
            params.put("password", userAccount.getPassword());
            return params;
        }
        @Override
        protected VolleyError parseNetworkError(VolleyError response) {
            try {

                String json = new String(response.networkResponse.data, HttpHeaderParser.parseCharset(response.networkResponse.headers));
                Log.e("KL", "ERROR_RESPONSE = " + json);
            }catch (Exception e){}
            return super.parseNetworkError(response);
        }
    };

    //Add to resquestQueue
    VolleySingleton.getInstance(this).addToRequestQueue(postRequest);
}

Консоль Logcat

enter image description here

0 голосов
/ 26 апреля 2018

Добавить:

post.setEntity(new StringEntity("grant_type=password&username=0000@gmail.com&password=00000", "UTF-8"));
...