java-关于webService 客户端 调用 对象数组 问题

问题描述

关于webService 客户端 调用 对象数组 问题

我自己写的一个服务端需要的参数是一个对象数组 比如
public String getAge(Student[] ss ) {
return ss[0].getAge();
}
这种形式的,
但是在客户端调用的时候 服务端接收到的 ss 对象数组的长度都为1,里面的对象的值都为null,哪位
大神指导一下新人啊

**下面是客户端调用代码**
public static void main(String [] args) throws ServiceException, MalformedURLException, RemoteException{
    String nameSpace="http://impl.webservice";
    String method="getAge";
    Service service = new Service();
    Call call=(Call)service.createCall();
    call.setTargetEndpointAddress(new java.net.URL("http://localhost:8070/TEST/services/testMyService?wsdl"));
    call.setUseSOAPAction(true);
    Student[] ss=new Student[2];
    Student s0=new Student();
    s0.setAge("123");
    s0.setName("57");
    ss[0]=s0;

    Student s1=new Student();
    s1.setAge("123");
    s1.setName("213");
    ss[1]=s1;
    QName qn =new QName(nameSpace,method);
    call.setOperationName(qn);
    call.registerTypeMapping(Student.class, qn,
               new org.apache.axis.encoding.ser.BeanSerializerFactory(Student.class, qn),
              new org.apache.axis.encoding.ser.BeanDeserializerFactory(Student.class, qn));

    String ret = (String) call.invoke(new Object[] {ss});

    System.out.println(ret);

}

解决方案

真是晕死,困扰了好几天的问题上午刚问出来下午就找到问题了,这是不是也是小黄鸭 调试法的一种呢 哈哈

call.invoke 的参数本来就是数组,就不用再在数组里面加数组了,好蛋疼的问题,我这么粗心是不是不能在干程序员啦~~

代码如下:
public static void main(String [] args) throws ServiceException, MalformedURLException, RemoteException{
Logger log=Logger.getLogger(Client.class);
String nameSpace="http://impl.webservice";
String method="getAge";
Service service = new Service();
Call call=(Call)service.createCall();
call.setTargetEndpointAddress(new java.net.URL("http://localhost:8070/TEST/services/testMyService?wsdl"));
call.setUseSOAPAction(true);
Object[] ss=new Student[2];
Student s0=new Student();
s0.setAge("123");
s0.setName("57");
ss[0]=s0;

    Student s1=new Student();
    s1.setAge("123");
    s1.setName("213");
    ss[1]=s1;

    QName qn =new QName(nameSpace,method);
    call.setOperationName(qn);
    call.registerTypeMapping(Student.class, qn,
               new org.apache.axis.encoding.ser.BeanSerializerFactory(Student.class, qn),
              new org.apache.axis.encoding.ser.BeanDeserializerFactory(Student.class, qn));
    for(int i=0;i<ss.length;i++){
        call.addParameter(qn, XMLType.SOAP_ARRAY,   ParameterMode.IN);
    }
    String ret = (String) call.invoke(ss);

    log.info(ret);
    System.out.println(ret);

}
时间: 2024-11-05 14:57:22

java-关于webService 客户端 调用 对象数组 问题的相关文章

关于webService客户端调用的问题

问题描述 本人客户端调用对应的服务器发布的WSDL的一个服务,但是在调用的时候出现的错误如下图所示,请能够理解的人能够给与帮助,谢谢!<SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header/><SOAP-ENV:Body><nn:......xmlns:nn="................./&quo

java web-java WebService,ajax调用的问题

问题描述 java WebService,ajax调用的问题 我用cxf发布了一个webservice, 接口: @WebService @SOAPBinding(style = SOAPBinding.Style.RPC) public interface IHelloService { @WebMethod String sayHello(); } 实现类: @WebService @SuppressWarnings("deprecation") public class Hell

Wblogic下WebService客户端调用问题

问题描述 使用CXFwsdl2java工具生成webservice客户端,在tomcat下能正常调用,但在weblogic下就会出现多个服务器串ip的情况代码如下/***获得webservice接口服务*通过这个服务调用webservice接口提供的方法*@paramip通信服务器ip地址*@paramport通信服务器webservice端口*@return*/publicUMPWebServiceIFServicegetService(Stringip,Stringport){UMPWebS

java 开发Webservice客户端获取服务端数据存入本地数据库

问题描述 之前没有接触过webService现在需要写个webService的客户端去获取服务端的数据,然后再存入到本机的数据库中,不知道该如何实现这个是开发的报表功能,现在报表的数据是本机自己建的表,但实际的数据要从别的几个系统中取出,再存入本机的数据库,所以想请问下实现过程是什么,谢谢 解决方案 解决方案二:可以用cxf或者axis2生成客户端.然后客户端里再实现数据的插入操作解决方案三:找个axis根据wsdl直接生成客户端,生成的客户端里面会带有接口的本地存根,这时就相当于调用本地的接口

webservice客户端调用方法报错

问题描述 webservice调用一下别人给的借口,在调用方法时出现如下错误,感谢各位兄弟抽时间看看publicclassBraceletClient{publicstaticvoidmain(String[]args)throwsMalformedURLException{//创建webservice的服务视图Serviceservice=newService();//通过视图得到服务端点ServicePortTypeservicePortType=service.getService();/

Eclipse插件生成webservice客户端调用代码

The first step is to start the code generation wizard. Go to File->New->Other. Then select Code generation from WSDL document.  The plugin will then prompt you for the location of your WSDL, where to output the code, and also what package you would

webservice cxf-webservice 客户端调用问题

问题描述 webservice 客户端调用问题 问题:服务端正常,能够正常访问wsdl地址.客户端调用,偶尔出现一下错误,有时候不报,网上找了很多办法,都没有解决,不知道有没有高人能够解决,调用代码如下: Object service = null; JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.setServiceClass(clazz); factory.setAddress(wsdl); servi

java写的客户端如何调用webservices

问题描述 现在有一个需求是,需要在java写的客户端调用一个webservices,webservices里传入的是一个xml的文件,请问我在webservices里要怎么才能获取到这个xml文件? 解决方案 解决方案二:晕!封装为一个webservice,并且自定义封装一个xml文件.那么就是简单的http通讯直接传送xml文件(使用url参数传送其它少量参数)不就行了嘛.就算你不想在url上出现参数,也可以把参数放到内容中嘛.是轻量级的http的输入出好理解,还是webservice好理解呢

webservice xml格式-webservice接口调用如何指定xml格式返回集合是并列的关系而不是包含关系。

问题描述 webservice接口调用如何指定xml格式返回集合是并列的关系而不是包含关系. webservice客户端调用服务端,给的数据是这样的. protected DTFPTXSINPUT.NUMBER_IN numberin; public DTFPTXSINPUT.NUMBER_IN getNUMBERIN() { return numberin; } public void setNUMBERIN(DTFPTXSINPUT.NUMBER_IN value) { this.numbe