一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 使用jaxws建立webservice客戶端并實現soap消息的handler驗證示例

使用jaxws建立webservice客戶端并實現soap消息的handler驗證示例

2019-11-14 15:23java教程網 JAVA教程

這篇文章主要介紹了使用jaxws建立webservice客戶端并實現soap消息的handler驗證示例,需要的朋友可以參考下

因項目需要,將之前使用過的webservice重新撿了起來,并且這次選擇了使用不需要jar包的Java原生Jaxws。首先是wsimport的用法,先分享我的用法:cmd下先轉到工程所在路徑,然后運行以下命令

 

復制代碼代碼如下:

wsimport -keep -extension -s ./src -p com.jaxws.test http://192.168.1.1:8080/service?wsdl


在com.jaxws.test的包下就能找到自動生成的各種客戶端相關輔助類。這些類怎么用就不細說了,網上很多資料。然后就是自己編寫調用類(我這里只是一個方法,會被調用到就行)

 

 

復制代碼代碼如下:

public String jaxws(Object[] opArgs)
{
    ServicesService service=new ServicesService();

    //向SOAP添加表頭
    service.setHandlerResolver(new HandlerResolver(){
        public List<Handler> getHandlerChain(PortInfo portInfo) {
            List<Handler> handlerList = new ArrayList<Handler>();
            //添加認證信息
            handlerList.add(new ClientHandler());
            return handlerList;
        }
    });

    String result =service.getServicesPort().getResults(opArgs.toString());
    //得到結果
    System.out.println(result); 
    return result;
}

 

注意到這里的【//添加認證信息 handlerList.add(new ClientHandler());】,所以我們還需要新建一個ClientHandler類來實現認證消息的組裝,如下:

 

復制代碼代碼如下:

package com.jaxws.test;

import java.util.Set;
import javax.xml.namespace.QName;
import javax.xml.soap.*;
import javax.xml.ws.handler.MessageContext;
import javax.xml.ws.handler.soap.SOAPHandler;
import javax.xml.ws.handler.soap.SOAPMessageContext;

public class ClientHandler implements SOAPHandler<SOAPMessageContext> {

    public boolean handleMessage(SOAPMessageContext ctx) {

    //出站,即客戶端發出請求前,添加表頭信息
    Boolean request_p=(Boolean)ctx.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
    if(request_p){
        try {
            SOAPMessage msg=ctx.getMessage();
            SOAPEnvelope env=msg.getSOAPPart().getEnvelope();
            SOAPHeader hdr=env.getHeader();
            if(hdr==null) hdr=env.addHeader();

            //添加認證信息頭

            //QName(String namespaceURI, String localPart, String prefix)
            //QName(String namespaceURI, String localPart)
            //QName(String localPart)
            //@param namespaceURI:QName的名稱空間
            //@param localPart:QName的本地部分
            //@param prefix:QName的前綴
            QName name=new QName("http://csdc.info/", "Authentication", "wsse");
            SOAPHeaderElement header = hdr.addHeaderElement(name);

            //addChildElement(String localName, String prefix,String uri)
            //addChildElement(String localName, String prefix)
            //addChildElement(String localName)
            //@param uri:新元素所屬空間名稱URI
            //@param localName:新元素的本地名稱
            //@param prefix:新元素名稱的空間前綴
            //見JDK 1.6的API
            SOAPElement userElement = header.addChildElement("Username", "wsse");
            userElement.addTextNode("admin");
            SOAPElement passElement = header.addChildElement("Password", "wsse");
            passElement.addTextNode("admin");

            msg.saveChanges();

            //把SOAP消息輸出到System.out,即控制臺
            msg.writeTo(System.out);

            return true;    
        } catch (Exception e) {    
           e.printStackTrace();    
        }
    }    
    return false;    
    }

    @Override
    public boolean handleFault(SOAPMessageContext context) {
        // TODO Auto-generated method stub
        return false;
    }

    @Override
    public void close(MessageContext context) {
        // TODO Auto-generated method stub        
    }

    @Override
    public Set<QName> getHeaders() {
        // TODO Auto-generated method stub
        return null;
    }
}


 這個類就把所有的soap消息都加上了一個頭消息,我這里的頭消息如下:

復制代碼代碼如下:

<wsse:Authentication xmlns:wsse="http://csdc.info/">
    <wsse:Username>admin</wsse:Username>
    <wsse:Password>admin</wsse:Password>
</wsse:Authentication>


這樣就實現了帶soap頭認證的基于jaxws的webservice客戶端。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产偷啪视频一区 | 色涩导航 | 久久国产主播福利在线 | 午夜爱爱爱爱爽爽爽视频网站 | 欧美精品日韩 | 国产91精品露脸国语对白 | 毛片在线观看网站 | 精品香蕉99久久久久网站 | 99国产精品免费观看视频 | 日本漫画大全之工之口 | 色多多在线观看视频 | 国产精品久热 | 久久日本片精品AAAAA国产 | 揉搓喷水h| 亚洲欧美专区精品久久 | 交换性关系中文字幕6 | 和肥岳在厨房激情 | 日韩欧美国产成人 | 色综合久久中文字幕 | 亚洲www美色 | 2021国产精品视频 | 亚洲精品乱码久久久久久蜜桃图片 | 精品一区二区国语对白 | 肥胖女人一级毛片 | 久久re亚洲在线视频 | 国产a一级毛片爽爽影院 | 丝袜美女被艹 | 国产特黄一级一片免费 | 久久er国产免费精品 | 国产欧美一区二区三区精品 | 91大神在线精品视频一区 | 91视频a| 无限观看社区在线视频 | 色综合久久天天综合观看 | 韩国三级年轻的小婊孑 | 555www成人网| 亚洲国产精品自在现线让你爽 | 免费视频完整版在线观看网站 | 国产123区在线视频观看 | 欧美肥乳 | 美女脱一光二净的视频 |