Использование метода get из библиотеки loopj для получения данных из git hub api v3 - PullRequest
0 голосов
/ 23 октября 2018

Я использую loopj для создания запроса GET для получения данных из GitHub API v3.Однако код состояния 403 продолжает возвращаться в обратном вызове, и я перепробовал все возможные решения, о которых мог подумать.

Вот код, который я использую, этот метод вызывается в onclicklistener кнопки.Я создал с помощью примеров кодов из других приложений, которые я разработал, и следуя инструкциям из loopj документов.

private void getDataFromGit() {


    final AsyncHttpClient client = new AsyncHttpClient();
    final String url = "https://api.github.com";
    client.addHeader("-H ", "application/vnd.github+json");


    client.get(getApplicationContext(), url,null, ContentType.APPLICATION_JSON.getMimeType(),  new JsonHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
            Toast.makeText(getApplicationContext(), "On Success: ", Toast.LENGTH_SHORT).show();

        }
        @Override
        public void onSuccess(int statusCode, Header[] headers, String responseString) {
            Toast.makeText(getApplicationContext(), "On Success: ", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
            Toast.makeText(getApplicationContext(), "On Failure: 1 " + String.valueOf(statusCode) + " "+  errorResponse.toString(), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONArray errorResponse) {
            Toast.makeText(getApplicationContext(), "On Failure: 2 " + String.valueOf(statusCode) + " " + errorResponse.toString(), Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
            Toast.makeText(getApplicationContext(), "On Failure: 3 " + String.valueOf(statusCode) + " " + throwable.toString(), Toast.LENGTH_SHORT).show();
        }
    });
}

Согласно git hub api docs этот запрос не требует проверки подлинности.

https://developer.github.com/v3/media/#request-specific-version

Тост возвращает обратный вызов сбоя с кодом состояния 403. Я пробовал несколько конечных точек, пытался добавить заголовок sugested из API, но все это возвращает тот же статускод.

2018-10-22 21:34:47.325 4685-4685/devarthur.post.gitrepos E/GET: On error cz.msebera.android.httpclient.client.HttpResponseException: Forbidden

Что еще я могу сделать, чтобы получить код состояния 200 с помощью loopj?

РЕДАКТИРОВАТЬ.

Итак, я получил несколько советов и нашел больше информации об ошибке 403 с этим API.Похоже, по умолчанию должен быть параметр User-Agent.Я пытаюсь создать запрос, используя это в качестве примера, если он работает, я опубликую это как ответ.

Запрос запрещен административными правилами.Убедитесь, что в вашем запросе есть заголовок User-Agent (http://developer.github.com/v3/#user-agent-required). Проверьте https://developer.github.com на другие возможные причины.

1 Ответ

0 голосов
/ 06 ноября 2018

Заголовок http должен выглядеть так: «Accept: application / vnd.github + json« -H »требуется только при использовании curl.Вы можете попробовать этот код: client.addHeader («Принять», «application / vnd.github + json»)

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