Получить ошибку при разборе данных из API залпа - PullRequest
0 голосов
/ 16 января 2020

Я посылаю вызов токена авторизации на URL Rest-Api. Это дает мне эту ошибку, когда я отправляю вызов

"com. android .volley.ParseError: org. json .JSONException: Value ����������� ���͎�0���W� | NV��! � типа java .lang.String не может быть преобразовано в JSONObject "

enter image description here

Вот код, куда я отправляю вызов

String tokenUrl = "https://api.webname.com/oauth/token?username=username&password=password&grant_type=password";
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
    (Request.Method.POST, tokenUrl, null, new Response.Listener<JSONObject>() {

        @Override
        public void onResponse(JSONObject response) {
            try {
                //stuff goes here
            }  catch (JSONException e) {
                e.printStackTrace();
            } 

            //Log.i("Response", response.toString());
        } 
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.i("Response", error.toString());
        } 
    }) {

// * Passing some request headers*
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
    HashMap<String, String> headers = new HashMap();
    headers.put("cache-control", "no-cache");
    headers.put("accept", "*");
    // I have alos tried headers.put("Content-Type", "application/json");
    headers.put("Content-Type", "application/x-www-form-urlencoded");
    headers.put("charset", "utf-8");
    headers.put("Authorization", "Basic Y2xpZW50OnNlY3JldA==");
    headers.put("accept-encoding", "gzip, deflate");
    return headers;
}
};

Я искал в Интернете, но не смог найти ни одного уместного вопроса, извините, если я повторяю его вопрос

1 Ответ

0 голосов
/ 16 января 2020

Добавить зависимость:

реализация 'ком. android .volley: volley: 1.1.0'

API вызова с использованием приведенного ниже фрагмента кода:

   private void APICall() {
        // TODO: Implement this method to send token to your app server.
        Common.ProgressDialogShow(context, getString(R.string.please_wait));
        Map<String, String> params = new HashMap<String, String>();
        params.put("username", "username");
        params.put("password", "password");
        params.put("grant_type", "password");
        JsonObjectRequest request = new JsonObjectRequest("https://api.webname.com/oauth/token", new JSONObject(params),
                new Response.Listener<JSONObject>() {

                    @Override
                    public void onResponse(JSONObject response) {
                        try {
                            parseJsonResponse(response);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                },
                new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError error) {
                        if (error.networkResponse != null) {
                            int statusCode = error.networkResponse.statusCode;
                            NetworkResponse response = error.networkResponse;

                            Log.d("testerror", "" + statusCode + " " + response.data);
                        }
                    }
                }) {
            @Override
            public Map<String, String> getHeaders() {
                Map<String, String> headers = new HashMap<String, String>();
                headers.put("User-agent", "Mozilla/5.0 (TV; rv:44.0) Gecko/44.0 Firefox/44.0");
                return headers;
            }
        };

        Common.setVolleyConnectionTimeout(request);
        ApplicationClass.getInstance().getRequestQueue().add(request);

    }


    /**
     * <b>Description</b> - Get back response for calling  APICall API
     *
     * @param jsonObject - Pass API response
     */
    private void parseJsonResponse(JSONObject jsonObject) {
        try {
            Common.ProgressDialogDismiss();
            Log.i("get response", "get response" + jsonObject);
            String access_token = jsonObject.getString("access_token");
            String token_type = jsonObject.getString("token_type");
            String refresh_token = jsonObject.getString("refresh_token");
            String expires_in = jsonObject.getString("expires_in");
            String scope = jsonObject.getString("scope");
            String jti = jsonObject.getString("jti");

            Log.d(TAG, "access_token: " + access_token);
            Log.d(TAG, "token_type: " + token_type);
            Log.d(TAG, "refresh_token: " + refresh_token);
            Log.d(TAG, "expires_in: " + expires_in);
            Log.d(TAG, "scope: " + scope);
            Log.d(TAG, "jti: " + jti);

        } catch (Exception e) {
            e.getStackTrace();
        }
    }

Вы сказали, что работаете нормально в эмуляторе и выпускаете в реальном устройстве, а затем посмотрите по ссылкам ниже:

Soluion-1
Soluion-2
Soluion-3
Soluion-4

Этот код поможет вам ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...