Java,AXIS,webService 调用 完整实例 xml 入参出参

* @param model
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value = "getDbPatientInfo" )
	public String listForGds(String message) {
		message = "<?xml version=\"1.0\" encoding=\"UTF-8\"?standalone=\"yes\"?>"
				+ "<data>"
				+ "<funname>inspect_list</funname>"
				+ "<schedule_time_start>2016-08-01</schedule_time_start>"
				+ "<schedule_time_end>2017-08-01</schedule_time_end>"
				+ "</data>"
				+ "";
		
        try {
        	String url = "http://localhost:7008/Service.svc?wsdl";//设置要调用的接口地址
        	String nameSpace = "http://tempuri.org/";//命名空间 targetNamespace 
        	String funName = "funMain";//设置函数名  
        	//创建服务
        	Service service = new Service();
            Call call = (Call) service.createCall();  
            call.setTargetEndpointAddress(url);
            call.setUseSOAPAction(true);  
            
            //返回参数类型
            call.setReturnType(XMLType.XSD_STRING);
            call.setEncodingStyle("UTF-8");
            call.setReturnType(new QName("http://www.w3.org/2001/XMLSchema","string"));//设置返回参数  xmlns:s="http://www.w3.org/2001/XMLSchema"
            
            //设置要调用的接口方法
            call.setOperationName(new QName(nameSpace,funName));//设置函数名  
            call.setSOAPActionURI("http://tempuri.org/IService/funMain");//设置URI
            
            
          
            //Map<String, String> roleMap = new HashMap<String, String>();
            //roleMap.put("Password", "123456");
            //1把 从当前命名空间的 nameSpace 元素名是 MySoapHeader 的元素 添加到
            //SOAPHeaderElement soapHeaderElement = new SOAPHeaderElement(nameSpace,soapHeader);
            /*
            <s:element name="MySoapHeader" type="tns:MySoapHeader"/>
			<s:complexType name="MySoapHeader">
				<s:sequence>
				<s:element minOccurs="0" maxOccurs="1" name="Password" type="s:string"/>
				</s:sequence>
				<s:anyAttribute/>
			</s:complexType>
             */
            
            //2 更改接口部分内容
           /* for (Map.Entry<String, String> entry : roleMap.entrySet()){
                soapHeaderElement.addChildElement(entry.getKey()).setValue(entry.getValue());
                soapHeaderElement.addChildElement(entry.getKey()).setValue(entry.getValue());
            }
            soapHeaderElement.setNamespaceURI(nameSpace);
            call.addHeader(soapHeaderElement);
            */
            
            
            
            /**
             * 第一种   添加参数
             */
            // 设置参数名:(message)    第二个参数表示String类型,第三个参数表示入参
            /*call.addParameter(new QName(nameSpace,"message"), XMLType.XSD_STRING, ParameterMode.IN);
            //返回参数类型
            call.setReturnType(XMLType.XSD_STRING);
            call.setEncodingStyle("UTF-8");
            String retVal = (String) call.invoke(new Object[]{message});
            logger.info(retVal); */
            
            
            
            
            /**
             * 第二种  添加参数
             */
            List<Object> list = new ArrayList<Object>();
            Map<String,Object> map=new HashMap<String, Object>();
            map.put("message",message);//输入参数值
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                if (entry.getValue() instanceof String) {
                    call.addParameter(new QName(nameSpace, entry.getKey()),
                            XMLType.XSD_STRING, ParameterMode.IN);
                } else if (entry.getValue() instanceof Long) {
                    call.addParameter(new QName(nameSpace, entry.getKey()),
                            XMLType.XSD_LONG, ParameterMode.IN);
                } else if (entry.getValue() instanceof Double) {
                    call.addParameter(new QName(nameSpace, entry.getKey()),
                            XMLType.XSD_DOUBLE, ParameterMode.IN);
                } else if (entry.getValue() instanceof Float) {
                    call.addParameter(new QName(nameSpace, entry.getKey()),
                            XMLType.XSD_FLOAT, ParameterMode.IN);
                } else if (entry.getValue() instanceof Integer) {
                    call.addParameter(new QName(nameSpace, entry.getKey()),
                            XMLType.XSD_INTEGER, ParameterMode.IN);
                } else if (entry.getValue() instanceof Date) {
                    call.addParameter(new QName(nameSpace, entry.getKey()),
                            XMLType.XSD_DATETIME, ParameterMode.IN);
                } else if (entry.getValue() instanceof Boolean) {
                    call.addParameter(new QName(nameSpace, entry.getKey()),
                            XMLType.XSD_BOOLEAN, ParameterMode.IN);
                }
                list.add(entry.getValue());
                logger.info(entry.getKey() + "=======" + entry.getValue());
            }
            //返回参数类型
            call.setReturnType(XMLType.XSD_STRING);
            call.setEncodingStyle("UTF-8");
            //开始调用
            String result = (String) call.invoke(list.toArray());
            logger.info(result);
            
				
				
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "";
	}

猜你喜欢

转载自blog.csdn.net/u014596302/article/details/76678550