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

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

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客戶端。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久er国产免费精品 | 99精品久久99久久久久久 | 国产精品原创巨作无遮挡 | 激情艳妇| 亚洲激情 欧美 | 精品久久久久久亚洲精品 | 幻女free性摘花第一次 | 久久噜国产精品拍拍拍拍 | 丰满艳妇亲伦视频 | 四虎影视永久在线观看 | sxx免费看视频在线播放 | 五月激激激综合网色播免费 | 国产麻豆剧果冻传媒观看免费视频 | 九9热这里真品 | 女女性恋爱视频入口 | 东北老妇露脸xxxxx | 国产香蕉视频在线观看 | 18young第一次 | porno movie hd高清| 国产a不卡片精品免费观看 国产aaa伦理片 | 欧美精品一区二区三区免费播放 | 欧美另类69xxx| tiny4k欧美极品在线 | 亚洲欧美日韩中文高清一 | 精品视频在线免费播放 | 厨房里摸着乳丰满在线观看 | 日韩av.com| 2022最新国产在线不卡a | 国内精品久久久久久中文字幕 | 国产精品露脸国语对白手机视频 | 色婷婷久久综合中文久久一本 | 欧美免赞性视频 | 欧美性色老妇人 | 欧美一卡2卡3卡四卡海外精品 | 暖暖暖免费观看在线观看 | 四色6677最新永久网站 | 午夜一个人在线观看完整版 | 亚洲va在线va天堂成人 | 肉蒲在线观看 | 四虎影院在线免费观看 | 午夜AV内射一区二区三区红桃视 |