java根据WSDL文档,如何调用WebService?

作为一个java开发人员,当我们获取到了对方提供的wsdl地址,然后在网页上能够访问wsdl文档以后,如何调用对方的webservic借口呢?


一下有几种方法,可以参考一下。

第一种是      HttpURLConnection方式

第二种是      JSP页面上纯JS调用


内容说明

1、WSDL文档基本说明

2、httpURLConnection方式调用

3、JS方式调用

4、获取的数据如何解析?


1、WSDL文档基本说明

接口文档如下:以下是公共对外开放的查询手机号归属地的一个借口文档:

WSDL:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

java根据WSDL文档,如何调用WebService?_第1张图片

java根据WSDL文档,如何调用WebService?_第2张图片

java根据WSDL文档,如何调用WebService?_第3张图片

java根据WSDL文档,如何调用WebService?_第4张图片

java根据WSDL文档,如何调用WebService?_第5张图片

java根据WSDL文档,如何调用WebService?_第6张图片

可以自己用浏览器打开访问一下;

一眼望去,可能接口看起来很复杂,较为繁琐。  但是作为开发人员,使用的时候,  我们可以查看关注点信息,就能实现接口的调用了!!

那么我们需要了解吗哪些信息呢?

从上面的文档里面,我们需要从头部(最上面一行)了解到:

系统的targetNamespace="http://WebXml.com.cn/"

标签里的的name=“xxxxxxx”,获知该文档提供了两个方法:

getMobileCodeInfo、getDatabaseInfo(后面带Response的是对应方法的回复)

从底部的标签里面,能获知请求地址。

http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx


一般而言,知悉以上信息,你就能调用借口了。需要传参数调用的,可能在业务上需要与对方了解一下,参数的格式(数据类型,文档里是可以知晓的)



2、httpURLConnection方式调用

代码如下:

package com.ssh.webserviceTSY;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;

public class Test {
    public static void main(String[] args) throws IOException {  
        //第一步:创建服务地址  
        URL url = new URL("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl");  
        //第二步:打开一个通向服务地址的连接  
        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("17321242779");  
        //将信息以流的方式发送出去
        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 phone){  
    	
    	String soapXML = ""  
    	        +""  
    	            +""  
    	              +""    
    	              +phone
    	              +""  
    	            +""  
    	        +"";  
        return soapXML;  
    }  
}


说明 :

一般的HTTP请求大部分都是相同的,但是由于webservice是基于soap协议的,所以,请求时的文本格式需要设置好。

文中的soapXML信息,需要注意xmlns:web=“tns” 这个xml命名空间, 这个空间是依据wsdl文档里的头部NameSpace信息,确定的

程序会依据这个名称,检索到该文档里面的方法,譬如:

获取getDatabaseInfo方法 (web是xmlns的名字,可以自定义,相当于“id”)


3、JS方式调用


<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




Test WebService









你可能感兴趣的:(学习,工作,http,接口)