Я использую 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 на другие возможные причины.