axis中document方式用法

优点:用ducument方式应用现对繁琐而灵活。现在用的比较多。因为真正摆脱了我们不想要的耦合

成都创新互联公司凭借专业的设计团队扎实的技术支持、优质高效的服务意识和丰厚的资源优势,提供专业的网站策划、成都网站建设、成都做网站、网站优化、软件开发、网站改版等服务,在成都十余年的网站建设设计经验,为成都超过千家中小型企业策划设计了网站。

代码:

public void addValidation(ServiceClient serviceClient, String tns , String token_str) {
        //创建的头结构,因你的需求不同,可以参考底部的图来对应具体的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创建请求
	        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  方法的参数
	        QName qname = new QName("param");
	        
	        OMElement para_name = fac.createOMElement(qname);//fac.createOMElement("",omNs);  
	        //参数的值
	        para_name.setText(""+inp_no+"");
	       
	        method.addChild(para_name);
	      
	        method.build();
	        
	        OMElement result1 = sender.sendReceive(method);
			/*根据你的需求解析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

wsdl文件打开后的webservice说明:

axis中document方式用法

关于创建命名空间时的第二个参数后缀

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

图中targetNames就是命名空间。

如果加了第二个参数会出现什么样子呢?我就是因为加了这个东西,而服务端没有对这个 后缀的解析,导致一直调不通服务。

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

axis中document方式用法

首先放一段我自己的请求报文(上图)。红框内的xmlns就是命名空间,如果createOMNamespace(tns, "dsp"); 这个方法来创建,则会变成xmlns:dsp=""


     
            B298CC760A2F2D09CEC6929D6F6D2190
        
   

这就是区别。


当前名称:axis中document方式用法
当前链接:http://scyanting.com/article/pspejs.html