我正在编写一个使用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应用程序中时,我能够正常查询所有数据。在Manifest中我启用了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();
}
答案 0 :(得分:3)
如果发生套接字错误(因此连接错误),Web服务返回的XML不可解析(因此服务器错误)或者a,则会在wordpress-java使用的Redstone XML-RPC库中发生该特定错误收到HTTP 200以外的响应。没有完整的堆栈跟踪很难分辨它是哪一个,但是我怀疑是否完全相同的代码在桌面上工作但在Android VM中没有,并且你有INTERNET权限,你有连接问题(你使用的是)模拟器或具有实时连接的设备?
包含完整的堆栈转储(在Android上使用android.util.Log.v("WPJAVA", "Exception ["+e.getMessage()+"]", e);
而非e.printStackTrace()
)。
编辑:而且,你有答案:
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");