Я пытаюсь получить список JSON постов Blogger внутри на Android приложения, но я получаю эту JSON в качестве результата:Blogger API вызовов возвращение 401 Ошибка Android
{
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Login Required",
"locationType": "header",
"location": "Authorization"
}
],
"code": 401,
"message": "Login Required"
}
}
Вот формат моих апи.
https://www.googleapis.com/blogger/v3/blogs/BLOG_ID/posts?key=API_KEY
С blog_id и api_key будучи заполнителей для фактических значений, используемых в коде.
Вот код для извлечения JSON.
private class AsyncCaller extends AsyncTask<Void, Void, String> {
@Override
protected String doInBackground(Void... params) {
// TODO Auto-generated method stub
DefaultHttpClient httpclient = new DefaultHttpClient(
new BasicHttpParams());
HttpPost httppost = new HttpPost(Constants.BLOOGER_API_REQUEST_PREFIX
+ "/blogs/" + Constants.BLOGGER_TEST_BLOGID + "/posts?key="
+ Constants.GOOGLE_API_KEY);
Log.d("HTTPPOST", Constants.BLOOGER_API_REQUEST_PREFIX
+ "/blogs/" + Constants.BLOGGER_TEST_BLOGID + "/posts?key="
+ Constants.GOOGLE_API_KEY);
httppost.setHeader("Content-type", "application/json");
InputStream inputStream = null;
String result = "";
Log.d("BEFORE TRY", "BEFORE TRY");
try {
HttpResponse response = httpclient.execute(httppost);
Log.d("Executed HTTP POST", "EXECUTED HTTPPOST");
HttpEntity entity = response.getEntity();
Log.d("GOT ENTITY", "GOT ENTITY");
inputStream = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(
inputStream, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
Log.d("INSIDE TRY", "INSIDE TRY");
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
Log.d("IN LOOP", "IN LOOP");
}
result = sb.toString();
Log.d("RESULT DONE", result.toString());
} catch (Exception e) {
// Bad
Log.d("BAD E", "BAD E");
e.printStackTrace();
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
} catch (Exception squish) {
}
}
if(result != null){
Log.d("RESULT GOOD", result.toString());
} else {
Log.wtf("BAD", "NULL RESULT");
}
onPostExecute(result);
return result;
}
Как вы можете видеть, я подписываю свои запросы с помощью ключа API, так что это не проблема.
Я пошел в блог в настройках вопроса и установил видимость для публики, поэтому я не думаю, что проблема не в OAuth. Я не понимаю, что еще нужно для выполнения «Требуется вход» в приложении, я бы предпочел, чтобы пользователь просто мог открыть приложение и посмотреть записи в блоге, не подвергая действию то, что происходит под капотом. И мой https, вызов api прекрасно работает в браузере, давая мне точный список результатов, которые я ожидал, поэтому синтаксис вызова API тоже не является проблемой, что оставляет меня в весьма затруднительном положении.
Вы пробовали в браузере? Получаете ли вы желаемый результат? –
@Indra Он отлично работает в браузере. – ChristianCuevas
Метод Get или метод post –