java吧 关注:1,275,001贴子:12,787,391
  • 5回复贴,共1

webservice客户端如何获取服务端返回的自定义类

只看楼主收藏回复

GetInfoResult result = new GetInfoResult();//这个类是在客户端重新创建了一个和服务端完全一样的自定义类
try {
Service service = new Service();
Call call = (Call) service.createCall();
call.setReturnType(new QName(namespace, "GetInfoResult"));
call.setReturnClass(GetInfoResult.class);
call.setReturnQName(new QName(namespace, "GetInfoResult"));
call.setTargetEndpointAddress(new java.net.URL(url));
call.setUseSOAPAction(true);
call.setSOAPActionURI(soapActionURI);
call.setOperationName(new QName(namespace, methodName));
call.addParameter(new QName(namespace, "Srcid"), XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter(new QName(namespace, "bDate"), XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter(new QName(namespace, "Edate"), XMLType.XSD_STRING, ParameterMode.IN);
result = (GetInfoResult)call.invoke(paraObject);
}
catch (Exception e) {
e.printStackTrace();
}
报如下错误:
0 ERROR client.Call invoke.2418 - No returnType was specified to the Call object! You must call setReturnType() if you have called addParameter().
第一次接触webservice,求高手帮忙!


1楼2012-10-10 18:36回复
    哈哈问题解决了,call.setReturnClass(GetInfoResult.class);这一行不要;
    //注册序列化和反序列化类
    call.registerTypeMapping(
    GetInfoResult.class,
    new QName(namespace,"GetInfoResult"),
    new BeanSerializerFactory(GetInfoResult.class, new QName(namespace, "GetInfoResult")),
    new BeanDeserializerFactory(GetInfoResult.class, new QName(namespace, "GetInfoResult")));
    在result = (GetInfoResult)call.invoke(paraObject);之前加上下面这段就可以了


    2楼2012-10-10 19:46
    回复
      2025-08-22 09:23:27
      广告
      不感兴趣
      开通SVIP免广告
      有用啊!


      IP属地:上海3楼2013-03-21 15:18
      回复
        xss 测试 <script>alert(1)</script>


        IP属地:广东4楼2013-03-21 16:00
        回复
          xss 测试 \<script>alert(1)\</script>


          IP属地:广东5楼2013-03-21 16:01
          回复
            call.setSOAPActionURI(soapActionURI);这句话的那个参数soapActionURL是什么


            6楼2014-04-01 09:08
            回复