java调用.net的webservices接口,调用成功但是对方接收不到参数

在项目中,使用Java通过Axis调用.NET的Web服务接口时遇到问题,尽管调用成功,但.NET方无法接收到传递的参数。尝试了多种解决方案未果后,改用XFire进行调用,最终成功实现通信。如有读者了解Axis调用中存在的问题,欢迎提供帮助。

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

项目上用到java调用.net的ws接口,本来使用axis的方式去调用,代码如下:
 

public static String doWS4Nomal(String url, List list ,Object[] obj, String methond, String nameSpace) {
        String endpoint = url;
        String result = "";
        Service service = new Service();
        Call call;
        if(obj==null){
            return "";
        }

        try {


            call = (Call) service.createCall();
            //如果是有SOAPAction命名空间的报错,则放开下两行
//            call.setUseSOAPAction(true);
//            call.setSOAPActionURI(nameSpace+methond);
            call.setTargetEndpointAddress(new URL(endpoint));// 远程调用路径
            //call.setOperationName(methond);// 调用的方法名
            call.setOperationName(methond);
            for (int i = 0 ; i < list.size() ; i ++){
                // 设置参数名:
                call.addParameter(new QName(nameSpace,(String)list.get(i)), // 参数名
                    XMLType.SOAP_STRING,// 参数类型:String
                    ParameterMode.IN);// 参数模式:'IN' or 'OUT'
            }
            // 设置返回值类型:
            call.setReturnType(XMLType.SOAP_STRING);// 返回值类型:String
            result = (String) call.invoke(obj);// 远程调用
            System.out.println(result);
            //log.info("**********获取所有xml数据**************"+result);
        } catch (ServiceException e) {
            //System.out.println("1"+e);
            e.printStackTrace();
        } catch (Exception e) {
            //System.out.println("2"+e);
            e.printStackTrace();

        }
        return result;
    }

命名空间也对,参数方法也对,但是对方就是获取不到数据

查询了很多方式没有解决,无奈之下只能换一条路:用xfire调用接口,这个方式确实可以成功,如果有人能看出上面方式的问题也欢迎留言!

public static JSONObject doWsXfire(String url, String method, String[] obj){
        JSONObject result = new JSONObject();
        Client client =null;
        Object[] results=null;
        try {
            client = new Client(new URL(url));
            results = client.invoke(method,obj);
            result = net.sf.json.JSONObject.fromObject(results[0]);
        }catch (Exception e){
            e.printStackTrace();
        }

        return result;
    }

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值