zoukankan      html  css  js  c++  java
  • 两种方式实现公网webservice的调用

    第一种方式:

    使用wsimport -p cn.hct.mobile -s . http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl 生产客户端代码

    编写代码调用:

     

    package com.hct.webservice;
    
    /**
     * @作者: HCT
     * @时间:2017年3月3日上午10:41:59
     * @描述:
     *
     */
    import java.io.IOException;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    import javax.xml.namespace.QName;
    import javax.xml.ws.Service;
    
    import cn.hct.mobile.MobileCodeWSSoap;
    
    public class ServiceQuery {
    	
    		public static void main(String[] args) throws IOException {
    			//创建WSDL的URL,注意不是服务地址
    			URL url = new URL("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl");
    			
    			//创建服务名称
    			//1.namespaceURI - 命名空间地址
    			//2.localPart - 服务视图名
    			QName qname = new QName("http://WebXml.com.cn/", "MobileCodeWS");
    			
    			//创建服务视图
    			//参数解释:
    			//1.wsdlDocumentLocation - wsdl地址
    			//2.serviceName - 服务名称
    			Service service = Service.create(url, qname);
    			//获取服务实现类
    			MobileCodeWSSoap mobileCodeWSSoap = service.getPort(MobileCodeWSSoap.class);
    			//调用查询方法
    			String result = mobileCodeWSSoap.getMobileCodeInfo("18221137382", "");
    			System.out.println(result);
    		}
    	
    
    }
    

      

    第二中方式:

    使用HttpURLConnection方式调用

    package com.hct.webservice;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    
    public class UrlHttp {
    
    	public static void main(String[] args) throws IOException {
    		//第一步:创建服务地址,不是WSDL地址
    		URL url = new URL("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx");
    		//第二步:打开一个通向服务地址的连接
    		HttpURLConnection connection = (HttpURLConnection) url.openConnection();
    		//第三步:设置参数
    		//3.1发送方式设置:POST必须大写
    		connection.setRequestMethod("POST");
    		//3.2设置数据格式:content-type
    		connection.setRequestProperty("content-type", "text/xml;charset=utf-8");
    		//3.3设置输入输出,因为默认新创建的connection没有读写权限,
    		connection.setDoInput(true);
    		connection.setDoOutput(true);
    
    		//第四步:组织SOAP数据,发送请求
    		String soapXML = getXML("18221137382");
    		OutputStream os = connection.getOutputStream();
    		os.write(soapXML.getBytes());
    		//第五步:接收服务端响应,打印
    		int responseCode = connection.getResponseCode();
    		if(200 == responseCode){//表示服务端响应成功
    			InputStream is = connection.getInputStream();
    			InputStreamReader isr = new InputStreamReader(is);
    			BufferedReader br = new BufferedReader(isr);
    			
    			StringBuilder sb = new StringBuilder();
    			String temp = null;
    			while(null != (temp = br.readLine())){
    				sb.append(temp);
    			}
    			System.out.println(sb.toString());
    			
    			is.close();
    			isr.close();
    			br.close();
    		}
    
    		os.close();
    	}
    	public static String getXML(String phoneNum){
    		String soapXML = "<?xml version="1.0" encoding="utf-8"?>"
    		+"<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">"
    			+"<soap:Body>"
    		    +"<getMobileCodeInfo xmlns="http://WebXml.com.cn/">"
    		    	+"<mobileCode>"+phoneNum+"</mobileCode>"
    		      +"<userID></userID>"
    		    +"</getMobileCodeInfo>"
    		  +"</soap:Body>"
    		+"</soap:Envelope>";
    		return soapXML;
    	}
    }
    

      

  • 相关阅读:
    vs 视图其它窗口命令窗口
    WPF 翻转动画实现(转)
    ASP.NET的后台代码和前台JS代码相互调用
    LINQ学习心得分享(三)LINQ语法详解2
    LINQ学习心得分享(二)LINQ语法详解
    《AJAX学习心得分享(三)AJAX+JSON无刷新加载大量后台数据》
    A simple poem
    LINQ学习心得分享(五)LINQ TO SQL实用详解
    LINQ学习心得分享(四)LINQ TO XML实用解析
    AJAX学习心得分享(一)AJAX初识+原生态AJAX
  • 原文地址:https://www.cnblogs.com/HCT118/p/6495228.html
Copyright © 2011-2022 走看看