Проблемы с потреблением данных Wordpress - PullRequest
1 голос
/ 17 мая 2011

Я пишу приложение, которое использует библиотеку wordpress-java для отображения каждой статьи в ListView (очень похоже на приложение NYTimes и другие подобные новостные приложения). Вот полная трассировка стека, которую я получаю всякий раз, когда пытаюсь получить данные (как с эмулятора, так и с телефона (Motorola Droid)):

05-16 23:00:45.800: WARN/System.err(1198): redstone.xmlrpc.XmlRpcException: The response could not be parsed.
05-16 23:00:45.839: WARN/System.err(1198):     at redstone.xmlrpc.XmlRpcClient.handleResponse(Unknown Source)
05-16 23:00:45.847: WARN/System.err(1198):     at redstone.xmlrpc.XmlRpcClient.endCall(Unknown Source)
05-16 23:00:45.847: WARN/System.err(1198):     at redstone.xmlrpc.XmlRpcClient.invoke(Unknown Source)
05-16 23:00:45.847: WARN/System.err(1198):     at redstone.xmlrpc.XmlRpcProxy.invoke(Unknown Source)
05-16 23:00:45.847: WARN/System.err(1198):     at net.bican.wordpress.$Proxy1.getRecentPosts(Native Method)
05-16 23:00:45.847: WARN/System.err(1198):     at net.bican.wordpress.Wordpress.getRecentPosts(Wordpress.java:497)
05-16 23:00:45.847: WARN/System.err(1198):     at namespace.onCreate(Test.java:28)
05-16 23:00:45.847: WARN/System.err(1198):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-16 23:00:45.847: WARN/System.err(1198):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
05-16 23:00:45.847: WARN/System.err(1198):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
05-16 23:00:45.847: WARN/System.err(1198):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
05-16 23:00:45.847: WARN/System.err(1198):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
05-16 23:00:45.847: WARN/System.err(1198):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-16 23:00:45.847: WARN/System.err(1198):     at android.os.Looper.loop(Looper.java:123)
05-16 23:00:45.847: WARN/System.err(1198):     at android.app.ActivityThread.main(ActivityThread.java:4627)
05-16 23:00:45.847: WARN/System.err(1198):     at java.lang.reflect.Method.invokeNative(Native Method)
05-16 23:00:45.847: WARN/System.err(1198):     at java.lang.reflect.Method.invoke(Method.java:521)
05-16 23:00:45.847: WARN/System.err(1198):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-16 23:00:45.847: WARN/System.err(1198):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-16 23:00:45.847: WARN/System.err(1198):     at dalvik.system.NativeStart.main(Native Method)
05-16 23:00:45.847: WARN/System.err(1198): Caused by: redstone.xmlrpc.XmlRpcException: Could not instantiate XMLReader parser
05-16 23:00:45.847: WARN/System.err(1198):     at redstone.xmlrpc.XmlRpcParser.parse(Unknown Source)
05-16 23:00:45.847: WARN/System.err(1198):     ... 20 more
05-16 23:00:45.847: WARN/System.err(1198): Caused by: org.xml.sax.SAXException: Can't create default XMLReader; is system property org.xml.sax.driver set?
05-16 23:00:45.847: WARN/System.err(1198):     at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(XMLReaderFactory.java:157)
05-16 23:00:45.847: WARN/System.err(1198):     ... 21 more

Однако, когда я добавляю точно такой же код в простое приложение Java, я могу нормально запрашивать все данные. В Манифесте я включил разрешение на android.permission.INTERNET. Есть ли что-то еще, что мне нужно включить? Я просмотрел остальные, и, похоже, ни один из них не ссылается на что-то связанное с данными (единственное, что мне нужно).

Вот код из приложения Java (Android выглядит примерно так же, плюс код ListView)

    String username = "username";
    String password = "password";
    String xmlRpcUrl = "http://www.example.com/xmlrpc.php";

    try
    {
        Wordpress wp = new Wordpress(username, password, xmlRpcUrl);            
        List<Page> recentPosts = wp.getRecentPosts(10);

        for (Page p : recentPosts)
        {
            System.out.println(p.getTitle());
        }
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }

1 Ответ

3 голосов
/ 17 мая 2011

Эта конкретная ошибка происходит в библиотеке Redstone XML-RPC, используемой wordpress-java, если произошла ошибка сокета (так что плохое соединение), XML-код, возвращаемый веб-службой, был не разборчив (так что ошибка сервера) илиОтвет, отличный от HTTP 200, был получен.Без полной трассировки стека трудно сказать, какой это, но я бы заподозрил, что точно такой же код работал на рабочем столе, но не на виртуальной машине Android, и у вас есть разрешение INTERNET, что у вас есть проблема с подключением (вы используетеэмулятор или устройство с работающим соединением)?

Включить полный дамп стека (используйте android.util.Log.v("WPJAVA", "Exception ["+e.getMessage()+"]", e); вместо e.printStackTrace() на Android).

РЕДАКТИРОВАТЬ: И у вас естьответ:

05-16 23:00:45.847: WARN/System.err(1198): Caused by: org.xml.sax.SAXException: Can't create default XMLReader; is system property org.xml.sax.driver set?

Попробуйте выполнить это до вызова функций Redstone:

System.setProperty("org.xml.sax.driver","org.xmlpull.v1.sax2.Driver");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...