java 访问Webservice 传递对象类型参数

as6611184 2010-09-11 06:04:07
public void send() throws Exception {
Map<String, Object> mpResult = null;
// 调用webService 来验证ID

Client client;
String url = "http://127.0.0.1:8080/GPSAS_WS_SENDMSG/SendMSGWS.ws?wsdl";
URL u = new URL(url);
client = new Client(u);
Object[] results = null;
client.setUrl("http://127.0.0.1:8080/GPSAS_WS_SENDMSG/SendMSGWS.ws");

// 实例化参数对象
SendMSG sengBean = new SendMSG();
sengBean.setMobileNumber("1366666666");
sengBean.setMessageContent("send");

List<SendMSG> lst = new ArrayList<SendMSG>();
lst.add(sengBean);
sengBean.setLstSend(lst);

// 序列化参数对象
ByteArrayOutputStream ba = out(sengBean);

System.out.println("-------ok----------" + ba);
results = client.invoke("test", new Object[] {ba});

String idCheckResult = results[0].toString();
System.out.println("-------ok----------" + idCheckResult);
}

/**
* 序列化
* @param sendBean
* @return
* @throws Exception
*/
public ByteArrayOutputStream out(SendMSG sendBean) throws Exception {
ByteArrayOutputStream buf = new ByteArrayOutputStream();
//把User对象序列化到一个字节缓存中
ObjectOutputStream out =new ObjectOutputStream(buf);
out.writeObject(sendBean);
byte[] buffer = buf.toByteArray();

return buf;
}


报异常:java.lang.ClassCastException

results = client.invoke("test", new Object[] {ba});
这里第二个参数应该转为什么类型,如何转换?
各位大侠请指点
...全文
2861 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
secenet 2011-07-26
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 as6611184 的回复:]

问题解决:
最后把对象转换成XML拼成的字符串传递的
[/Quote]

我也碰到同样的问题, 如何把对象换成xml字符串啊, 可以贴一下你的转换代码吗, 谢谢
或者258114255@qq.com
as6611184 2011-07-14
  • 打赏
  • 举报
回复
问题解决:
最后把对象转换成XML拼成的字符串传递的
yanhaolang 2011-07-06
  • 打赏
  • 举报
回复
我遇到同样的问题,求解。。。
龙四 2010-09-11
  • 打赏
  • 举报
回复
你访问的是wsdl,且服务器方法参数是List,webservice实现肯定要转成它转成XML

如果webservice还序列化干嘛不用rmi

序列化了c语言啊,c#就调用不了这些接口了


[Quote=引用 7 楼 as6611184 的回复:]

必须转成XML吗,网上说 用序列化也可以,但不知道怎么转
[/Quote]
as6611184 2010-09-11
  • 打赏
  • 举报
回复
必须转成XML吗,网上说 用序列化也可以,但不知道怎么转
龙四 2010-09-11
  • 打赏
  • 举报
回复
webservice传递的不是序列化的对象

webservice本来就是为了跨平台可以调用方法,所以在方法参数和返回值上是有些限制的,这些参数和返回值必须可以通过某种绑定方式(如JAXB)绑定到xml(也就是把java对象的属性弄成xml),参数和返回值都是通过xml进行传递的

你需要通过查看wsdl文件看List是以什么格式绑定到XML的,然后构造出相应的格式,有些webservice实现中,List是不能作为参数和返回值的

所以还是通过wsdl文件生成客户端代码调用比较方便


[Quote=引用 3 楼 as6611184 的回复:]

如果传递基本类型参数可以执行成功,但是现在要求传递List对象,在网上查了序列化的方法,但是不知道最终要转成什么类型才可以传递过去
[/Quote]
as6611184 2010-09-11
  • 打赏
  • 举报
回复
?怎么解决的
ass3326524 2010-09-11
  • 打赏
  • 举报
回复
顶个。遇到了同样的问题。解决咯
as6611184 2010-09-11
  • 打赏
  • 举报
回复
如果传递基本类型参数可以执行成功,但是现在要求传递List对象,在网上查了序列化的方法,但是不知道最终要转成什么类型才可以传递过去
龙四 2010-09-11
  • 打赏
  • 举报
回复
为什么不通过wsdl文件生成客户端来调用?
taoqingqing 2010-09-11
  • 打赏
  • 举报
回复
不知道,顶起来

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧