2014-02-19 1 views
0

Я учусь развивать услуги на Android и следуя примеру Маракана Ямбы.winterwell.jtwitter.TwitterException: org.json.JSONException: Value <! DOCTYPE типа java.lang.String не может быть преобразован в JSONArray

Я создал UpdaterService, который тянет твиты и регулярный интервал и RefreshService, которые будут вытаскивать твиты при выборе.

Для вытягивать твиты код является одинаковым в обоих услугах, но в RefreshService я получаю ниже ошибки при UpdateService работает withput любая ошибка:

02-19 14:31:41.359 1323-1345/com.tutorial.yamba.yamba W/System.err﹕ winterwell.jtwitter.TwitterException: org.json.JSONException: Value (JSONArray.java:96) 02-19 14:31:41.379 1323-1345/com.tutorial.yamba.yamba W/System.err﹕ at org.json.JSONArray.(JSONArray.java:108) 02-19 14:31:41.389 1323-1345/com.tutorial.yamba.yamba W/System.err﹕ at winterwell.jtwitter.Twitter$Status.getStatuses(Twitter.java:339) 02-19 14:31:41.389 1323-1345/com.tutorial.yamba.yamba W/System.err﹕ ... 7 more

Ниже RefreshService класс

package com.tutorial.yamba.yamba; 

import android.app.IntentService; 
import android.content.Intent; 
import android.util.Log; 

import java.util.List; 

import winterwell.jtwitter.Twitter; 
import winterwell.jtwitter.Twitter.Status; 
import winterwell.jtwitter.TwitterException; 

public class RefreshService extends IntentService { 

    static final String TAG = "RefreshService"; 
    Twitter twitter; 

    public RefreshService() { 
     super(TAG); 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     twitter = new Twitter(someusername, somepassword); 
     twitter.setAPIRootUrl("http://www.yamba.marakana.com/api"); 
     Log.d(TAG, "onCreate"); 
    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 
     Log.d(TAG,"onhandleIntent enter"); 
     try { 
      List<Status> timeline = twitter.getPublicTimeline(); 
      Log.d(TAG,timeline.size()+""); 
      for (Status status : timeline) 
      { 
       Log.d(TAG, String.format("%s: %s", status.user.name, status.text)); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     Log.d(TAG, "onDestroy"); 
    } 


} 

Любая помощь будет высоко оценена.

Спасибо.

ответ

0

Это сообщение об ошибке похоже, что сервер возвращает страницу с ошибкой html. Я думаю, что сервер Marakana, возможно, переместился (или выключился).

Почему бы не попробовать работать с Twitter напрямую? Вам нужно использовать oauth для аутентификации, но в противном случае учебник Marakana должен быть в порядке.

Или есть identi.ca, который может использовать имя/пароль. Но oauth не так сложно, а Twitter - веселее.

NB: Лучше всего, чтобы загрузить последнюю версию JTwitter от http://www.winterwell.com/software/jtwitter.php

+0

но та же строка кода работает от класса UpdateService. – user3275095

+0

@ user3275095 Класс UpdateService? У Jtwitter его нет. Это ваш собственный класс/что-то из учебника? Пожалуйста, предоставьте более подробную информацию. –

+0

Точно. Оба класса взяты из учебника. – user3275095