远程调用服务器端的webservice接口

搞了几天的研究,终于搞出三种调用方式
第一种:
SoapObject request = new SoapObject(“http://rkxx.ws.sq.lb.com/“, “view”);
request.addProperty(“arg0”, “E5BE68C1153F2076”);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = request;
HttpTransportSE ht=new HttpTransportSE(“http://192.168.1.202:8080/lbkj_esb/webservice/rkxxWS?wsdl“);
try {
ht.call(null,envelope);
} catch (IOException | XmlPullParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
SoapObject soapObject =( SoapObject) envelope.getResponse();
} catch (SoapFault e) {
// TODO Auto-generated catch block
e.printStackTrace();
第二种:
package com.lb.sq.ws.security;

import java.io.IOException;

import javax.security.auth.callback.Callback;
import javax.security.auth.callback.CallbackHandler;
import javax.security.auth.callback.UnsupportedCallbackException;

import org.apache.ws.security.WSPasswordCallback;

public class WsClinetAuthHandler implements CallbackHandler {

public void handle(Callback[] callbacks) throws IOException,
        UnsupportedCallbackException {
    // TODO Auto-generated method stub
    for (int i = 0; i < callbacks.length; i++) { 
        WSPasswordCallback pc = (WSPasswordCallback) callbacks[i]; 
       // System.out.println("identifier: " + pc.getIdentifier()); 
        // 这里必须设置密码,否则会抛出:java.lang.IllegalArgumentException: pwd == null 
        // but a password is needed 
        pc.setIdentifier("lbkj");
        pc.setPassword("123456");//密码



    }
}

}
调用:

            Map<String, Object> outProps = new HashMap<String, Object>();
            outProps.put(WSHandlerConstants.ACTION,
                    WSHandlerConstants.USERNAME_TOKEN);
            outProps.put(WSHandlerConstants.USER, "lbkj2");
            outProps.put(WSHandlerConstants.PASSWORD_TYPE, WSConstants.PW_TEXT);
            // 指定在调用远程ws之前触发的回调函数WsClinetAuthHandler,其实类似于一个拦截器
            outProps.put(WSHandlerConstants.PW_CALLBACK_CLASS,
                    WsClinetAuthHandler.class.getName());
            ArrayList list = new ArrayList();
            // 添加cxf安全验证拦截器,必须
            list.add(new SAAJOutInterceptor());
            list.add(new WSS4JOutInterceptor(outProps));

            JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
            // WebServiceSample服务端接口实现类,这里并不是直接把服务端的类copy过来,具体请参考http://learning.iteye.com/blog/1333223
            factory.setServiceClass(RkxxWS.class);
            // 设置ws访问地址
            factory.setAddress("http://192.168.1.202:8080/lbkj_esb/webservice/rkxxWS?wsdl");
            //注入拦截器,用于加密安全验证信息
            factory.getOutInterceptors().addAll(list);
            RkxxWS service = (RkxxWS) factory.create();
            String response = service.view("E5BE68C1153F2076");
            System.out.println(response);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

京之火

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值