httpclient远程调用webservice

当使用CXF调用WSDL文件失败时,采用HttpClient实现远程调用WebService。通过创建PostMethod,设置请求数据、SOAPAction头以及超时时间,成功后返回响应字符串。

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

最近领导让写个接口,但对方给的wsdl文件用cxf调用老师失败,生成客户端也不行。无奈网上找了个httpclient调用的例子按照需求改写了一下,特此备个份!


public static String call(String wsdl, String requestData) {  
    try {  
        // requestData可以直接用soapui中请求的数据,注意<![CDATA[]]>的使用  
        PostMethod postMethod = new PostMethod(wsdl);  
        byte[] b = requestData.getBytes("UTF-8");  
        InputStream in = new ByteArrayInputStream(b, 0, b.length);  
        RequestEntity re = new InputStreamRequestEntity(in,  
                "application/soap+xml; charset=utf-8");  
        postMethod.setRequestEntity(re);  
        // 设置header SOAPAction,不设置的话,会报异常:no SOAPAction  
        // header, SOAPAction 为wsdl文件中对应属性,应加上双引号否则报soapaction格式错误
        postMethod.setRequestHeader("SOAPAction", SIEBLE_SOAP_ACTION);  
        HttpClient client = new HttpClient();  
        // 设置超时(不知道默认是多久,没有设置的时候,也没有报错,设置下保险些)  
        int timeout = 10 * 60 * 1000;  
        client.getHttpConnectionManager().getParams().setConnectionTimeout(timeout);  
        client.getHttpConnectionManager().getParams().setSoTimeout(timeout);  
        int status = client.executeMethod(postMethod);  
        if (status == 200) {// 成功  
            String is = postMethod.getResponseBodyAsString();  
            System.out.println("通信成功:"+is);
            return is;
            /** 
             * 获取的结果可以参考用soapui调用时的返回值, 
             * 如果约定的返回值是XML,并不会像soapui一样把xml用<![CDATA[]]>包含起来,要注意解析的方法, 
             * 不知道soapui如何处理的,暂时没时间研究。 
             */  
            //return getResponseXML(is);  
        } else {  
            System.out.println("错误代码:"+status+":"+postMethod.getResponseBodyAsString());
        }  
    } catch (Exception e) {  
        //log.error(e.getMessage());  
    System.out.println(e.getMessage());
    }  
    return null;  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值