使用axis 调用webservice时怎么处理返回字符串数组

该博客主要讲述了如何通过AXIS调用远程WebService服务获取DG983盾构主监控数据,处理并组装数据到ShieldData对象中,然后利用OkHttpUtil发送数据到智慧工地服务器的过程。涉及到的步骤包括设置服务链接、操作名称、返回类型以及异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Future<String[]> monitor = threads.submit(new Callable<String[] >() {
    @Override
    public String[] call() throws Exception {
        Call call = getMonitorCall();
        String result[] = (String[]) call.invoke(new Object[]{});//返回结果
        log.info("DG983盾构主监控返回数据:"+result);
        return result;
    }
});
try {
    ShieldData shieldData = new ShieldData();
    String[] Data1 = monitor.get(60, TimeUnit.SECONDS);
    String dataDG983 = org.apache.commons.lang3.StringUtils.join(Data1, ",");
    shieldData.setType(active);
    //等待数据接收完成
    shieldData.setMonitorDG983(dataDG983);
    log.info("DG983对象数据"+shieldData.toString());
    //发送智慧工地服务器
    String Vo = OKHttpUtil.postMap(addShieldProUrlNew15, null, shieldData);
    log.info("DG983数据已发送成功!且返回数据:"+Vo);
    log.info("DG983程序调用完成");
}catch (Exception e){
    log.info("DG983链接错误:"+e);
    log.info("DG983错误消息:"+e.getMessage());
}

调用:

private Call getMonitorCall(){
        if(monitorCall == null){
            try {
                //使用AXIS远程调用WebService服务; webservice路径 这里后面加不加 "?wsdl" 效果都一样的                

                String endpoint = "http://192.168.110.24/OPC_Read_Write_Svr/Service.asmx";//链接地址 DG983
                Service service = new Service();//新建服务
                URL url = new URL(endpoint);//新建URL
                monitorCall = (Call) service.createCall();//服务链接
                monitorCall.setTargetEndpointAddress(url);//设置url
                monitorCall.setOperationName(new QName("getData"));//设置调用接口名
                // 设置返回值类型
                // 对于返回是字符串数组的返回类型只有这两种可行
                monitorCall.setReturnClass(java.lang.String[].class);
                monitorCall.setUseSOAPAction(true);
                monitorCall.setSOAPActionURI("http://www.crcc.cn/getData");
//                call.setReturnType(XMLType.SOAP_ARRAY);
//                call.setUseSOAPAction(true);
//                call.setSOAPActionURI("http://www.crcc.cn/getData");

            }catch (Exception e){
                log.error("[e]getMonitorCall exception!",e);
            }
        }
        return monitorCall;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值