java调用webservice-添加认证头(SOAPHeader)

 有时候有些 webservice的调用 服务端要求除了必要的参数以外  还需要通过认证头的认证  比如下面这一段


一种方式,通过 axis 来实现




/**
	 * 获取axis请求形式的加密头
	 * @return SOAPHeaderElement
	 */
	public SOAPHeaderElement getHoapHeader(){
		Map<String,String> map = CacheKit.get("PageCache","signInfo");
		if(map==null){
			map = WebKit.getSignInfo();
			CacheKit.put("PageCache","signInfo",map);
		}
		int thirdType = Integer.valueOf(map.get("thirdType"));
		int secret1 = Integer.valueOf(map.get("secret1"));
		String secret2 = map.get("secret2");
		
		//上面代码为从缓存中取到我们需求传递到认证头的数据 下面开始添加认证头
		SOAPHeaderElement head = new SOAPHeaderElement(new QName("http://www.hzsun.com/","SecurityHeader")); 
		try {
			SOAPElement a1 = head.addChildElement("ThirdType");
		    a1.addTextNode(thirdType+""); 
	        a1 = head.addChildElement("Secret1"); 
	        a1.addTextNode(secret1+""); 
	        a1 = head.addChildElement("Secret2"); 
	        a1.addTextNode(secret2+""); 
	        
	        head.setPrefix("");
		    head.setActor(null);
		   //head.setMustUnderstand(true);
		} catch (SOAPException e) {
			e.printStackTrace();
		}
		return head; 
	}


public static Map<String,String> getSignInfo(){
		Map<String,String> singInfoCache = new HashMap<String,String>();
		try{
		      // 指出service所在URL       
		      String endpoint = "http://xxx.xxx.xx.xx/ThirdWebservice.asmx";  
		      String targetNamespace = "http://www.hzsun.com/";
		      String method="SignIn";
		      
		      // 创建一个服务(service)调用(call)       
		      Service service = new Service();  
		      Call call = (Call) service.createCall();// 通过service创建call对象       
		      
		      // 设置service所在URL       
		      call.setTargetEndpointAddress(new java.net.URL(endpoint));  
		      call.setOperationName(new QName(targetNamespace, method));
		      call.setUseSOAPAction(true);

	          Object ret = call.invoke(new Object[] {null});  
	          System.out.println(ret.toString());
	          Map<String,String> out = call.getOutputParams();
	          if (out!=null){
		           Iterator<Entry<String,String>> it = out.entrySet().iterator(); 
		           while (it.hasN
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值