java调用c#的webservice接口,传递List参数问题

ruixue0139 2012-09-05 10:54:09
用java调用c编写的webservice接口,需要传递List参数,在服务器端总是接收不到传入的参数,从服务器端打出来的list.count总是0,麻烦高手帮忙看下问题出在什么地方吧
客户端代码:
String endpoint= "http://ip:port/Service.asmx";
Service service = new Service();

List<User> list1 = new ArrayList<User>();
User c1 = new User();
c1.userid = "user1";
c1.username = "张三";
list1.add(c1);
User c2 = new User();
c2.userid ="user2";
c2.username ="李四";
list1.add(c2);

Call call = (Call) service.createCall();
QName qn = new QName("http://tempuri.org/","User");
call.registerTypeMapping(User.class, qn,
new org.apache.axis.encoding.ser.BeanSerializerFactory(User.class,qn),
new org.apache.axis.encoding.ser.BeanDeserializerFactory(User.class,qn));
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("http://tempuri.org/","I_List"));

call.setSOAPActionURI("http://tempuri.org/I_List");

call.addParameter(new QName("http://tempuri.org/", "list1"), org.apache.axis.encoding.XMLType.XSD_ANYTYPE, javax.xml.rpc.ParameterMode.IN);
call.invoke(new Object[]{list1});

服务器端代码:
[WebMethod]
public void I_List(List<User> list1)
{
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\log.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "[" + list1.ToString() + "]");
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "[" + list1.Count + "]");
}
}
[Serializable]
public class User
{

public string userid;
public string username;


}

服务器端打出的日志:
2012-09-05 17:26:57 [System.Collections.Generic.List`1[Service+User]]
2012-09-05 17:26:57 [0]
...全文
796 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
springcyq 2013-11-27
  • 打赏
  • 举报
回复
我也想知道怎么解决这个问题,顶下!
  • 打赏
  • 举报
回复
都是用xml传递参数的,直接传递可行吗??

24,923

社区成员

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

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