CXF中的返回数据类型——ArrayOfString的接收

最近刚接触webservice,就直接碰上了数据接收失败的问题。我无法将返回的数据用Object意外的格式进行处理,因为它的类型就是ArrayOfString。

百度和测试了两天之后,找到了这样的答案。
ArrayOfString这个类是一个自定义类,在相当于String、Integer这样的包装类型。然后我将其源码找到了(https://blog.csdn.net/qq_20545159/article/details/48004199),复制下来之后保存到我定义的类里,再次进行数据格式转换仍然失败。

然后我使用CXF创建了webservice的客户端,查看其接口代码。服务端返回的数据,使用getClass()方法查看其类型的时候是:cn.com.webxml.ArrayOfString,我自定义的类型,包路径并不是这样的。这是我认为的为什么我的会报错的原因。

然后将包路径转换成客户端中包的路径之后,成功转换和输出返回数据。

下面是我的客户端代码

import cn.com.webxml.ArrayOfString;
import org.apache.cxf.endpoint.Client;
import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
import org.junit.jupiter.api.Test;

import java.util.List;
public class client {
    public static void main(String[] args) {
        JaxWsDynamicClientFactory jaxWsDynamicClientFactory = JaxWsDynamicClientFactory.newInstance();
        Client client = jaxWsDynamicClientFactory.createClient("http://www.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl");
        try {
            Object[] getUsers = client.invoke("getMobileCodeInfo", "18339429913", "");
            System.out.println(getUsers[0].toString());
            Object[] result = client.invoke("getDatabaseInfo");
            System.out.println(result.getClass());
            ArrayOfString arrayOfString = (ArrayOfString) result[0];
            System.out.println(arrayOfString.getString());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

还有一个要注意的点,使用普通的Test不能运行客户端,我懒得找原因,就直接使用了main函数来执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值