【问题标题】:What datatype should be used here to Accept the response from the Server这里应该使用什么数据类型来接受来自服务器的响应
【发布时间】:2012-08-29 10:47:15
【问题描述】:

我正在使用XMLRPCMagento 服务器 发出请求,以使用multiCall() 函数获取详细信息。
我在调用multiCall() 函数方面取得了成功,因为它不会 对任何Exception 产生影响。

我正在使用Objects发送数据,当我使用Object DataType 来获得响应时,它会给出Exception 之类的 p>

java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:200)
at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
at java.lang.Thread.run(Thread.java:1019)
Caused by: java.lang.ClassCastException: [Ljava.lang.Object;
at org.xmlrpc.ProductService$doingBackTask.doInBackground(ProductService.java:94)
at org.xmlrpc.ProductService$doingBackTask.doInBackground(ProductService.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)    

我调用的代码如下:

Object[] skuid=new Object[product_list.size()];
Object calling[]=new Object[product_list.size()];

for(int m=0;m<product_list.size();m++)
{
    skuid[m]=new Object[]{product_list.get(m).getp_Sku()};
    calling[m]=new Object[]{"catalog_product_attribute_media.list",skuid[m]};   
}

Object b[][];
try 
{
  // The Upcoming line causes Exception : java.lang.ClassCastException 
  b=(Object[][])client.callEx("multiCall",new Object[]{sessionId,calling});  
}
catch (XMLRPCException e) 
{
    e.printStackTrace();
}

【问题讨论】:

    标签: java android object xml-rpc xmlrpclib


    【解决方案1】:

    这个例外几乎是不言自明的:callEx 方法调用的结果是 java.lang.Object 类型,而您正试图将其强制转换为 String[][]

    显然,返回的值不是String[][] 类型。你有这个callEx 方法的来源吗?如果是,我建议你深入研究它,看看它究竟返回了什么。

    【讨论】:

    • Aleks G...我运气不好..实际上我已经编辑了它并使它成为对象,就在你可能正在回答它的时候。我们俩可能都处于编辑模式。实际上在把问题放在这里之前我尝试了很多不同的东西。这是我在这里尝试的最后一件事..:))..实际上 multiCall() 是 Magento 提供的 API 调用。我没有代码.我所做的调用将返回产品图像的 URL 列表。但是用对象替换它也会给我同样的异常。
    • @HareshChaudhary 请出示callEx方法的代码 - 这是负责打包结果的人。
    • Aleks G : 这是 Android-XMLRPC 库提供的 inbulit 方法……但我还是想给你问我的类的类似的东西..在这里..pastie.org/private/uidmu3pwrnhkmpc1tneq跨度>
    • @HareshChaudhary 什么是 iXMLRPCSerializer 在行 Object obj = iXMLRPCSerializer.deserialize(pullParser);?这个对象属于哪个类?是你自己的课吗?
    • @HareshChaudhary 是的,我明白;正是这一行产生的结果与您想要的不同。
    猜你喜欢
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2021-04-15
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    相关资源
    最近更新 更多