我想使用xmlrpc传递一个对象,因为这是我可以将Integer和String传递给服务器上的方法的唯一可能方式。是否可以使用对象执行此操作?如果没有,还有其他方法吗?
我试图这样做,但是收到了这个错误:
JavaClient:XML-RPC Consumer Fault#java.io.IOException:unsupported Java类型:类Client.Article
这是客户端的代码:
public void addHash()
{
try {
addAuthorName = txtAddAuthorName.getText();
int addArticleNumber = Integer.parseInt(txtAddArticleNumber.getText());
newArticle = new Article(addAuthorName, addArticleNumber);
Vector<Object> addArticleArglist = new Vector<Object>();
addArticleArglist.addElement(newArticle);
System.out.println(newArticle);
// make the call
String callit = ("GetSize.addHash");
articleID = (Integer) client.execute(callit, addArticleArglist);
} // Use XmlRpcException errors
catch (XmlRpcException exception) {
System.err.println("JavaClient: XML-RPC Consumer Fault #"
+ Integer.toString(exception.code) + ": "
+ exception.getCause() + "" + exception.toString());
} catch (Exception exception) {
System.err.println("JavaClient: XML-RPC Consumer Fault #" + exception.toString());
}
}
这是服务器端的代码但是通过使用System.out.println我发现无论出于何种原因,此方法中的代码都没有被执行:
public void addHash(Article newArticle)
{
theHashtable.addHash(newArticle.getArticleName(), newArticle.getAuthorID());
}
答案 0 :(得分:1)
假设您使用的是ws-xmlrpc
文档,请说明以下内容:
DOM nodes, or JAXB objects, can be transmitted. So are objects implementing the java.io.Serializable interface.
因此,通过声明您的对象可序列化,您将能够传输它。根据你想做的事情,好好了解一下jaxb。
有关详细信息,请参阅http://ws.apache.org/xmlrpc/。