溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

axis中document方式用法

發(fā)布時間:2020-05-28 14:06:12 來源:億速云 閱讀:285 作者:鴿子 欄目:編程語言

優(yōu)點:用ducument方式應用現(xiàn)對繁瑣而靈活?,F(xiàn)在用的比較多。因為真正擺脫了我們不想要的耦合

代碼:

public void addValidation(ServiceClient serviceClient, String tns , String token_str) {
        //創(chuàng)建的頭結構,因你的需求不同,可以參考底部的圖來對應具體的xml結構
        OMFactory fac = OMAbstractFactory.getOMFactory();
        OMNamespace omNs = fac.createOMNamespace(tns, "");
        OMElement header = fac.createOMElement("AuthorizationSoapHeader", omNs);
        OMElement token = fac.createOMElement("MDIP_ACCESSTOKEN", omNs);
        
        //token.setText(token_str);
        token.addChild(fac.createOMText(token, token_str));
		
        header.addChild(token);

        serviceClient.addHeader(header);
      }
	
	public void init() {
		try {
			String inp_no =  this.getParameters(null)[0].getValue().toString();
			
			String url = "http://xxxxx/services/select_v_inp_mr_page_list?wsdl";
			// assign WebService url
	        EndpointReference targetEPR = new EndpointReference(url);
	        
	        Options options = new Options();
	        options.setTo(targetEPR);
			// 命名空間/方法 拼接起來
	        options.setAction("http://datareceive.service.esb.medata.com/dataReceive");
	        
	     // create request創(chuàng)建請求
	        ServiceClient sender = new ServiceClient();
	        sender.setOptions(options);
	        //添加請求頭,很多時候把鑒權的信息放在請求頭里
	        FR_AXIS2_WS se = new FR_AXIS2_WS();
	        se.addValidation(sender, "http://xxxxxxxxx.medata.com/", "B298CC760A2F2D09CEC6929D6F6D2190");
	        System.out.println (111);
	     // create an OMFactory,it control namespace,method and parameter
		 
	        OMFactory fac = OMAbstractFactory.getOMFactory();
	     // namespace 命名空間
	        OMNamespace omNs = fac.createOMNamespace("http://xxxxxx.esb.medata.com/", "");
	     // method 要調用的方法
	        OMElement method = fac.createOMElement("dataReceive", omNs); // 對應方法名
	       //method's parameter  方法的參數(shù)
	        QName qname = new QName("param");
	        
	        OMElement para_name = fac.createOMElement(qname);//fac.createOMElement("",omNs);  
	        //參數(shù)的值
	        para_name.setText(""+inp_no+"");
	       
	        method.addChild(para_name);
	      
	        method.build();
	        
	        OMElement result1 = sender.sendReceive(method);
			/*根據(jù)你的需求解析xml。。不需要的小伙伴可以不看下面*/
	        System.out.println(result1.getFirstElement().getText()); 
	        System.out.println(result1.getFirstElement().getLocalName()); 
	        String xml = "" + result1.getFirstElement().getText() ;
	        System.out.println(xml);
	        Document doc = DocumentHelper.parseText(xml);
	        Element rootElt = doc.getRootElement();
	        
	        Listnodes = rootElt.elements();
	        String RETURNCODE = nodes.get(0).getText();
	        String ERRORMEG = nodes.get(1).getText();
	        Listitem_nodes = nodes.get(2).elements();
	        String name = null;
	        int index = 0;
	        String[] cols = this.columnNames;
	        Object[][] datas = new Object[item_nodes.size()][cols.length];
	        for (Element item:item_nodes) {
	        	
	        	for(int i =0;i<cols.length;i++) {="" system.out.println(cols[i]);="" name="item.element(cols[i]).getText();" system.out.println("xxxx:"+name+",item_nodes.size():"+item_nodes.size());="" datas[index][i]="item.element(cols[i]).getText();" }="" index++;="" listinfo_nodes = item.elements();
//	        	for(Element node : info_nodes){
//	    	        System.out.println(node.getName()+":"+node.getText());
//	    	        
//	        	}
	        }
	        System.out.println("bbb:"+datas[0][0]); 
	        
	        int a1 = (int)(100*Math.random());
	        //String[] columnNames = {"NAMES","SCORE","init_method"};
//	        Object[][] datas = {{"Alex", a1,11},
//	                {"Helly", 1112,23}, {"bob", 99,name}};//result1.getFirstElement().getText()
	        this.columnNames = columnNames;
	        this.rowData = datas;
			} catch (AxisFault axisFault) {
		          axisFault.printStackTrace();
		        }
			catch (DocumentException e) {
	            e.printStackTrace();
	        }
	}

wsdl文件打開后的webservice說明:

axis中document方式用法

關于創(chuàng)建命名空間時的第二個參數(shù)后綴

OMNamespace omNs = fac.createOMNamespace(tns, "");

圖中targetNames就是命名空間。

如果加了第二個參數(shù)會出現(xiàn)什么樣子呢?我就是因為加了這個東西,而服務端沒有對這個 后綴的解析,導致一直調不通服務。

例如OMNamespace omNs = fac.createOMNamespace(tns, "dsp");


axis中document方式用法

首先放一段我自己的請求報文(上圖)。紅框內的xmlns就是命名空間,如果createOMNamespace(tns, "dsp"); 這個方法來創(chuàng)建,則會變成xmlns:dsp=""

<soapenv:Header>
     <AuthorizationSoapHeader  xmlns:dsp="http://xxxxxxxxx.medata.com/">
            <MDIP_ACCESSTOKEN>B298CC760A2F2D09CEC6929D6F6D2190</MDIP_ACCESSTOKEN>
        </AuthorizationSoapHeader>
   </soapenv:Header>

這就是區(qū)別。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI