this关键字java_Java中Socket的方法

this关键字java_Java中Socket的方法目录JWS简介第一个案例ws服务端浏览器访问客户端调用测试JWS简介JavaWebService是Java语言对WebService服务的一种实现,用来开发和发布服务,为Java开发者提供便捷

目录

WebService (web服务)概述

WebService 平台技术

WebService 工作原理

WebService 开发流程

常见 Web Service 框架

JWS(Java Web Service) 概述

JWS(Java Web Service) 快速入门

 WSDL 文件结构剖析

服务方法数据类型说明

@WebResult 与 @WebParam

 WebService 常用免费调用接口


WebService (web服务)概述

1、WebService(Web服务)是一种跨语言、跨平台的远程调用技术。

A、跨语言:服务器与客户端可以使用不同的语言开发,客户端都能调用服务器开放的接口,服务器只需要写一遍,任意语言的客户端都能进行调用。

B、跨平台:服务端程序和客户端程序可以运行在不同的操作系统上。

C、远程调用:指计算机 A(客户端) 上的程序可以调用计算机 B(服务器) 上的对象的方法。如火车站进出站需要刷身份证,参加大型展会、演唱会时也可以刷身份证,显然火车站以及展览会、演唱会这些刷身份证的系统自己是不可能有全国人民的身份证数据的,它们都在公安局的数据库里,所以就可以理解成是公安身份证系统使用 webService 向外提供了接口,各地刷身份证的系统作为客户端调用而已。

2、WebService 是可互操作的分布式应用程序的一个平台、一个标准,它定义了应用程序如何在 Web 上实现互操作性,可以用任何语言在任何平台上写 Web Service 服务端,然后可以通过 Web service 标准对这些服务进行操作。 

3、如果系统需要为任意的第三方客户提供服务,那么服务器系统就可以使用 webService 技术,这样方便数据交互。需要注意的是如果服务端接口方为webservice,则客户端也必须使用 webservice 。

web Service 应用场景?

1. 同一家公司的新旧应用之间,子系统之间,如校内的招生系统、就业系统、缴费系统、考试系统等

2. 不同公司的业务应用之间,如天猫网与中通物流系统交互

3. 一些提供数据的内容聚合服务应用,如天气预报、股票行情、机票、邮政编码等

如何发布一个 webService?

1、定义 SEI(Service Endpoint Interface)服务终端接口,即 webService 提供的服务接口

2、定义 SIB(Service Implemention Bean)服务实现类,即 webService 提供的服务接口的实现类

3、发布 webService 服务  Endpoint publish(String address, Object implementor)

如何请求一个 webService?

1、根据服务的提供的 wsdl 文档生成客户端代码,可以使用 Java Jdk自带的 wsimport.exe工具,或者 使用第三方如 Apache 的 CXF wsdl2java 工具既能生成服务端代码,也能生成客户端代码。

2、根据生成的客户端代码调用 webService

一次 web service 请求的本质(流程)?

1、客户端向服务器端发送了一个 soap消息 (http 请求+ xml 片断)

2、服务器端处理完请求后, 向客户端返回一个 soap 消息(结果)

3、整个请求与应答都是围绕着 wsdl 文件,每次请求都是靠解析 wsdl 文件来确定调用哪个具体的方法,参数以及返回值等,所以如果调用的过程中,wsdl 文件无法访问,或者文件错误,都会导致调用失败。

WebService 平台技术

XML+XSD ,SOAP,WSDL 构成 WebService 平台的三大技术。

1)XML+XSD

WebService 采用 HTTP 协议传输数据,采用 XML 格式封装数据(XML中说明调用远程服务中哪个对象的方法,传递的参数、返回结果等)。XML 的主要优点在于它与平台无关。

XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD),作用是定义 XML 文档的合法构建模块,类似 DTD,最重要的能力之一就是对数据类型的支持。WebService 平台就是用 XSD 来作为其数据类型系统的,当用某种语言(如VB、.NET、C#、Java等)来构造一个 Web service 时,为了符合 WebService 标准,所有使用的数据类型都必须被转换为XSD类型。

2)SOAP

SOAP(Simple Object Access Protocol)是基于 XML 的简单对象访问协议,可使应用程序在 HTTP 之上进行信息交换。

SOAP 指简易对象访问协议
SOAP 是一种通信协议
SOAP 用于应用程序之间的通信
SOAP 是一种用于发送消息的格式
SOAP 被设计用来通过因特网进行通信
SOAP 独立于平台
SOAP 独立于语言
SOAP 基于 XML
SOAP 很简单并可扩展
SOAP 允许您绕过防火墙
SOAP 将被作为 W3C 标准来发展

WebService 通过 HTTP 协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP 消息头,以说明 HTTP 消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准的RPC 方法来调用 Web Service 。

更多 SOAP 可以参考:SOAP 教程

3)WSDL

WSDL(Web Services Description Language) 是基于 XML web服务描述语言,用于描述 Web Service 及其函数、参数和返回值等,这样客户端才能方便调用。一些开发工具既能根据 Web service 生成 WSDL 文档,又能导入 WSDL 文档,生成调用相应 WebService 的代理类代码。

WSDL 文件保存在Web服务器上,通过一个 url 地址即可访问。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址,WebService 服务提供商通常通过两种方式来暴露它的 WSDL 文件地址:1、注册到UDDI服务器,以便被人查找;2、直接告诉给客户端调用者。

WebService 工作原理

1、客户端 API 通过服务器的 wsdl 文件的 url 地址,创建出底层的代理类,客户端调用这些代理,就可以访问到 webservice 服务。代理类把客户端的方法调用变成 soap 格式的请求数据再通过 HTTP 协议发出去,并把接收到的 soap 数据变成返回值返回。

2、对服务端而言,各类 WebService 框架的本质就是一个大大的 Servlet,当远程客户端给它通过 http 协议发送过来 soap 格式的请求数据时,它分析这个数据,就知道要调用哪个 java 类的哪个方法,于是去查找或创建这个对象,并调用其方法,再把方法返回的结果包装成 soap 格式的数据,通过 http 响应消息回给客户端。

WebService 开发流程

WebService 开发可以分为服务器端开发和客户端开发两个方面。

1)服务端开发

把公司内部系统的业务方法发布成 WebService 服务,供远程合作单位和个人调用。

借助一些 WebService 框架可以很轻松地把自己的业务对象发布成 WebService 服务,Java 语言常用的第三方 WebService 框架有:axis,xfire,cxf 等。

当然还以 Java 自己的 JWS 。JWS 是 Java 语言对 WebService 服务的一种实现,用来开发和发布服务,不需要任何第三方库,为 Java 开发者提供便捷发布和调用 WebService 服务的途径。

2)客户端开发 

调用别人发布的 WebService 服务,例如调用天气预报 WebService 服务、调用门票服务、地图服务等。

因为是远程调用服务端的对象方法,所以需要在客户端也生成服务器提供的服务类,这通常有如下几种方式:

1、使用第三方如 Apache 的 CXF wsdl2java 工具既能生成服务端代码,也能生成客户端代码;

2、直接使用服务提供商的提供的客户端编程 API 类;

3、Java JDK 在 bin 目录下提供了一个 wsimport.exe 程序,用于生成 WebService 客户端代码,然后调用 WebService;

常见 Web Service 框架

1)JWS

JWS 是 Java 语言对 WebService 服务的一种实现,用来开发和发布服务,为 Java 开发者提供便捷发布和调用WebService服务的功能。Java 1.6 开始推出 JWS,在 javax.jws 包下。

在线 JDK 文档:Java Platform SE 6

2)Axis2

Axis2 是 Apache 中一个重量级 WebService 框架,它是一个 Web Services / SOAP / WSDL 的引擎,是 WebService 框架的集大成者,不但能制作和发布 WebService,而且可以生成 Java 和其它语言版本的 WebService 客户端和服务端代码。

它的优势不可避免的导致了Axis2 的复杂性,所依赖的包数量多,体积大,打包部署发布也比较麻烦,不能很好的与现有应用整合为一体。但是如果是要开发 Java 以外的语言客户端,Axis2 提供的丰富工具将是不二的选择。

官网地址:Apache Axis

Axis2 Java 版本官网地址:Apache Axis2 – Apache Axis2/Java – Next Generation Web Services

3)XFire

XFire 是一个高性能的 WebService 框架,在 Java6 之前,它的知名度甚至超过了Apache 的 Axis2,XFire 的优点是开发方便,与现有的 Web 整合很好,可以融为一体,并且开发也很方便。

XFire 对 Java 之外的语言,没有提供相关的代码工具,XFire 后来被 Apache 收购了,在此基础上开发出了更强大的 CXF。

官网地址:Xfire – Download

4)CXF

1、CXF(Celtix + XFire) 是 Apache 旗下重磅的 SOA (Service Oriented Architecture) 面向服务的框架,它实现了 ESB(企业服务总线),能很好的和 Spring 进行集成。

2、CXF 由 Celtix 和 XFire 两个框架合并而来,就像目前的 Struts2 来自 WebWork 一样。可以看出 XFire 的命运会和 WebWork 的命运一样,最终会淡出人们的视线。

3、CXF 不但是一个优秀的 Web Services / SOAP / WSDL 引擎,也是一个不错的 ESB 总线,为 SOA 的实施提供了一种选择方案。
4、虽然 Axis2 出现的时间较早,但 CXF 的追赶速度快。

5、CXF 官网:Apache CXF — Index

总结:
1、如果应用程序需要多语言的支持,Axis2 应当是首选了; 
2、如果应用程序是遵循 Spring 哲学路线的话,Apache CXF 是一种更好的选择,特别对嵌入式的 Web Services 应用; 
3、如果应用程序没有新的特性需要,项目不大的话,可以任意采用 Axis1,XFire,或者 Java 自带的  Jws。

JWS(Java Web Service) 概述

1、Java Web Service 是 Java 语言对 WebService 服务的一种实现,用来开发和发布服务,为 Java 开发者提供便捷发布和调用WebService服务的功能。无需借助任何第三方库。

2、Java 1.6 开始推出 JWS,在 javax.jws 包下,在线 JDK 文档:Java Platform SE 6。

3、开发过程十分简单:

1、服务端创建接口

2、服务端创建接口具体实现

3、服务端开启服务

4、客户端调用

4、编码也十分简单,因为整个 javax.jws 包一共也没多少 API。

this关键字java_Java中Socket的方法

5、因为 webservice 以 xml 格式进行传输数据,同时也会涉及一些 javax.xml 包下的 API。

JWS(Java Web Service) 快速入门

1、创建一个服务器项目(Java SE)、同时创建一个客户端项目(Java SE),服务端创建一个接口和其实现类,其中提供数据相加与数据相乘的两个方法,然后对外提供这个数据计算的服务,客户端通过 webService 技术可以直接调用服务端系统中的计算方法。

2、无论是 Java SE 应用还是 Java Web 应用,对于使用 jws 的 API 都是一样的,这里为了简单以创建 Java SE 项目进行演示。

ws 服务端

新建一个 Java SE 项目如下,名称 web_server,其中的代码结构如下。

1、第一步创建 CalculatorService 接口,这是需要对外提供服务的接口,客户端需要知道其中的内容。

2、第二步创建实现类 CalculatorServiceImpl,这是接口的具体实现,客户端是无法知道其中的内容的。

3、第三步创建 Web_Service 类,用于启动 webService 服务。

具体的 API 已经在注释解释的很详细了。

this关键字java_Java中Socket的方法

1、CalculatorService 接口内容如下:

import javax.jws.*;
/**
 * Created by Administrator on 2019/1/25 0025.
 * 计算器接口
 * SEI(Service Endpoint Interface):服务终端接口,即webService提供的服务接口
 * SIB(Service Implemention Bean):服务实现类,即webService提供的服务接口的实现类
 *
 * @javax.jws.WebService : 将 Java 类标记为实现 Web Service,或者将 Java 接口标记为定义 Web Service 接口
 * 不过是服务端还是客户端,接口上都必须写上此注解
 */
@WebService
public interface CalculatorService {

    //加法
    //@WebService 中的方法上可以加上 @WebMethod 注解,也可以不加
    //@WebMethod 注解写或不写,服务端都会将 @WebSerivce 中的所有方法提供给客户端掉
    //写上的好处就是看起来更加直观而已,如同 @Override 重写注解意义,删除也无影响
    public float addition(float a, float b);

    //乘法
    public float multiplication(float a, float b);
}

2、CalculatorServiceImpl 实现类内容如下:

import javax.jws.WebService;
import java.util.logging.Logger;
/**
 * Created by Administrator on 2019/1/25 0025.
 * SEI(Service Endpoint Interface):服务终端接口,即webService提供的服务接口
 * SIB(Service Implemention Bean):服务实现类,即webService提供的服务接口的实现类
 *
 * @javax.jws.WebService : 将 Java 类标记为实现 Web Service,或者将 Java 接口标记为定义 Web Service 接口
 * endpointInterface:终端接口,定义服务抽象 Web Service 协定的服务端点接口的完整名称,通常设置为服务实现类的全路径
 * 接口要写,实现类也必须写 @WebService
 * @WebService 接口一共提供了以下属性,而且都有默认值,它们将来都会出现在 wsdl 的 xml 文件中
 * String name() default "";
 * String targetNamespace() default "";
 * String serviceName() default "";
 * String portName() default "";
 * String wsdlLocation() default "";
 * String endpointInterface() default "";
 */
@WebService(endpointInterface = "com.lct.web_service.CalculatorService")
public class CalculatorServiceImpl implements CalculatorService {
    //日志记录器
    public static final Logger logger = Logger.getGlobal();

    @Override
    public float addition(float a, float b) {
        logger.info("加法计算:" + a + " + " + b + " = " + (a + b));
        return a + b;
    }

    @Override
    public float multiplication(float a, float b) {
        logger.info("乘法计算:" + a + " x " + b + " = " + (a * b));
        return a * b;
    }
}

3、Web_Service 启动 webService 服务类内容如下:

import javax.xml.ws.Endpoint;
/**
 * Created by Administrator on 2019/1/25 0025.
 * webServer 启动类
 */
public class Web_Service {
    public static void main(String[] args) {
        /**webService服务器提供给客户端访问的地址
         * 192.168.1.20 为服务器 ip、3333为指定的端口号、web_server 为应用名称、calculator为标识
         * 这个地址符合 http 地址即可,为了看起来更像是 web访问,所以才写了应用名,其实 http://192.168.1.20:3333/xxx 都是可以的
         */
        String wsUrl = "http://192.168.1.20:3333/web_server/calculator";

        /**
         * javax.xml.ws.Endpoint 表示一个 web service 终端,这是一个抽象类,其中提供了静态方法可以直接调用
         * Endpoint publish(String address, Object implementor)
         * address:传输协议的 url 地址;
         * implementor(实现者):web service 终端的实现类,因为一个 ws 接口可能会有多个实现类
         */
        Endpoint.publish(wsUrl, new CalculatorServiceImpl());
    }
}

浏览器访问

1、webService 服务启动成功之后,根据提供 wsdl 地址,直接通过浏览器即可访问,看到服务端提供的接口(服务),客户端只需要解析这个 xml 文件即可进行服务调用。

2、注意地址最后的 wsdl 参数必须加上。

this关键字java_Java中Socket的方法

此 xml 文件全部内容如下:docs/WebService WSDL 文件结构.xml · 汪少棠/my-document – Gitee.com

客户端

1、调用别人发布的 WebService 服务,例如调用天气预报 WebService 服务、调用门票服务、地图服务等。因为是远程调用服务端的对象方法,所以需要在客户端也生成与服务器一致的服务接口,这通常有如下几种方式:

1、使用第三方如 Apache 的 CXF wsdl2java 工具既能生成服务端代码,也能生成客户端代码;

2、Java JDK 在 bin 目录下提供了一个 wsimport.exe 工具,用于根据 wsdl 文件生成 WebService 客户端代码,然后调用 WebService;

3、直接使用服务提供商的提供的客户端编程 API 接口;

2、简单的说就是客户端调用 webService 服务器的接口,客户端自己也要有与服务器一致的接口,但是客户端不需要服务端接口的实现类

3、新建客户端项目(Java SE )如下,其中 CalculatorService 是与服务端一样的接口,Web_service 类用于调用服务器上的方法。

this关键字java_Java中Socket的方法

1、CalculatorService 接口内容如下,如果服务端、客户端都是 Java 开发,则完全可以联系服务器开发人员直接把这个接口的代码发过来即可。所以下面的代码与服务端完全是一样的。

import javax.jws.WebService;
/**
 * Created by Administrator on 2019/1/25 0025.
 * 计算器接口
 * SEI(Service Endpoint Interface):服务终端接口,即webService提供的服务接口
 * SIB(Service Implemention Bean):服务实现类,即webService提供的服务接口的实现类
 *
 * @javax.jws.WebService : 将 Java 类标记为实现 Web Service,或者将 Java 接口标记为定义 Web Service 接口
 * 无论作为服务端还是客户端都必须写 @WebService 注解
 */
@WebService
public interface CalculatorService {

    //加法
    public float addition(float a, float b);

    //乘法
    public float multiplication(float a, float b);
}

2、Web_service 类用于调用 webService 服务,内容如下:

import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Logger;
/**
 * Created by Administrator on 2019/1/25 0025.
 */
public class Web_service {
    //日志记录器
    public static final Logger logger = Logger.getGlobal();

    public static void main(String[] args) {
        try {
            /** url:webservice 服务端提供的服务地址,结尾必须加 "?wsdl"*/
            URL url = new URL("http://192.168.1.20:3333/web_server/calculator?wsdl");

            /** QName 表示 XML 规范中定义的限定名称,QName 的值包含名称空间 URI、本地部分和前缀。
             * QName(final String namespaceURI, final String localPart):指定名称空间 URI 和本地部分的 QName 构造方法。
             * 如下所示的两个数据都可以浏览器访问服务端时返回 xml 中第一行找到,如:
             * <definitions xmlns:wsu=xxxxxxx targetNamespace="http://web_service.lct.com/" name="CalculatorServiceImplService">
             */
            QName qName = new QName("http://web_service.lct.com/", "CalculatorServiceImplService");

            /**
             * Service 对象提供 Web 服务的客户端视图
             * Service 作为以下内容的工厂:1、目标服务端点的代理,2、用于远程操作的动态面向消息调用的 javax.xml.ws.Dispatch 实例。
             * create(java.net.URL wsdlDocumentLocation,QName serviceName):创建 Service 实例。
             * wsdlDocumentLocation : 服务 WSDL 文档位置的 URL
             * serviceName : 服务的 QName
             */
            Service service = Service.create(url, qName);

            /**
             * 使用 getPorts 方法可以对服务上可用的端口/接口进行枚举
             * getPort(Class<T> serviceEndpointInterface):获取支持指定服务端点接口的对象实例
             * serviceEndpointInterface:指定返回的代理所支持的服务端点接口
             */
            CalculatorService calculatorService = service.getPort(CalculatorService.class);
            float added = calculatorService.addition(100, 80);
            float multied = calculatorService.multiplication(2.5F, 100);

            logger.info("added:" + added);
            logger.info("multied:" + multied);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }

    }
}

调用测试

1、先运行服务器开启 webService 服务,然后运行客户端看是否能调用服务端上的实现类进行计算,如果可以则说明 webService 服务提供成功。

this关键字java_Java中Socket的方法

由上可见完全成功。

 WSDL 文件结构剖析

WebService WSDL 文件结构

WSDL(Web Services Description Language) 是基于 XML web服务描述语言,用于描述 Web Service 及其函数、参数和返回值等,这样客户端才能方便调用。一些开发工具既能根据 Web service 生成 WSDL 文档,又能导入 WSDL 文档,生成调用相应 WebService 的代理类代码。

WSDL 文件保存在Web服务器上,通过一个 url 地址即可访问。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址,WebService 服务提供商通常通过两种方式来暴露它的 WSDL 文件地址:1、注册到UDDI服务器,以便被人查找;2、直接告诉给客户端调用者。

1、WSDL 文件作为一个 XML 文件,顶部必须用 <?xml version=”1.0″ encoding=”UTF-8″?> 声明。

2、WSDL 文档的根元素是 definitions 元素,WSDL 文档包含5部分:types, message, portType, binding,service 。

this关键字java_Java中Socket的方法

1)definitions 元素

A、WSDL 文档的根元素都是 definition 元素,其中主要的是最后的两个属性,targetNameSpace 与 name。

B、targetNameSpace 属性 对应 @WebService 注解的 targetNameSpace属性,name 属性对应 @WebService 注解的 serviceName 属性。

C、可以在 webService 服务端的接口实现类中的 @WebService 注解中通过修改属性,从而修改 wsdl 文件的definition 元素的属性值,否则 targetNameSpace 为 “http://” 加 “包名的反写”,name 为 “实现类名称”+”Service”。

2)types 元素:定义访问的类型,如请求的方法名,参数,以及返回值等。

this关键字java_Java中Socket的方法

可以浏览器访问 schemaLocation 属性的值,看到详细信息。

this关键字java_Java中Socket的方法

3)message:SOAP 协议消息传递的参数,同样包括请求与返回两部分。

this关键字java_Java中Socket的方法

message 的元素会和 types 中的元素进行对应。

4)portType:指明服务器的接口,并且通过 operation 绑定相应的 input、ouput 消息。

this关键字java_Java中Socket的方法

5)binding:指定消息传到所使用的格式

6)service:指定服务所发布的名称

服务方法数据类型说明

1、Java 默认提供的 JWS API 开发 webService 时,支持自己的 8 种基本类型: boolean、byte、short、int、long、float、double 和 char、也支持引用类型 List、Set、Array,以及自定义的 POJO 对象 等,但唯独不支持 Map 类型。

2、如果服务接口方法的参数或者返回值是 Map 类型,则 Endpoint.publish 发布时直接报错失败,如下所示为方法的返回值使用 Map 类型时,启动服务时报错:

Exception in thread "main" javax.xml.ws.WebServiceException:
class com.lct.web_service.jaxws.GetStudentMapResponse do not have a property of the name return

3、所以要么就服务接口中的方法参数以及返回值尽量不要使用 Map 类型,换成其它类型,如 List 等,如果一定要用 Map 类型,则只能导入 CXF 等第三方框架的 Jar 包,不用改变任何代码,即可正常发布成功。客户端仍然使用 JWS 的 API 即可,可以不用导入 CXF 的 包。

@WebResult 与 @WebParam

1、上面 types 元素定义访问的类型,如请求的方法名,参数,以及返回值等,使用的都是默认值,如果想要进行修改,则可以使用 这两个注解。

 @WebResult :定义 wsdl 文件中,服务端方法返回值名称
 @WebParam :定义 wsdl 文件中,客户端请求的方法参数名称

定义在接口中的方法上即可,如下所示进行修改,其余内容不变。

import javax.jws.*;
/**
 * Created by Administrator on 2019/1/25 0025.
 * 计算器接口
 * SEI(Service Endpoint Interface):服务终端接口,即webService提供的服务接口
 * SIB(Service Implemention Bean):服务实现类,即webService提供的服务接口的实现类
 *
 * @javax.jws.WebService : 将 Java 类标记为实现 Web Service,或者将 Java 接口标记为定义 Web Service 接口
 * 不过是服务端还是客户端,接口上都必须写上此注解
 */
@WebService
public interface CalculatorService {
    /**
     * @WebResult :定义 wsdl 文件中,服务端方法返回值名称
     * @WebParam :定义 wsdl 文件中,客户端请求的方法参数名称
     */
    //加法
    @WebResult(name = "additionResult")
    public float addition(@WebParam(name = "a") float a, @WebParam(name = "b") float b);

    //乘法
    @WebResult(name = "multiplicationResult")
    public float multiplication(@WebParam(name = "a") float a, @WebParam(name = "b") float b);
}

this关键字java_Java中Socket的方法

 WebService 常用免费调用接口

1、更多 webservice 公开地址:WEB服务(Web Servicrs)| 免费WEB服务 | 商业WEB服务 | XML Web Servicrs – WEBXML。

天气预报Web Service,数据来源于中国气象局

Endpoint

Disco

WSDL

IP地址来源搜索Web Service(是目前最完整的IP地址数据)

Endpoint

Disco

WSDL

随机英文、数字和中文简体字Web Service

Endpoint

Disco

WSDL

中国邮政编码 <-> 地址信息双向查询/搜索Web Service

Endpoint

Disco

WSDL

验证码图片Web Service 支持中文、字母、数字 图像和多媒体

Endpoint

Disco

WSDL

Email 电子邮件地址验证Web Service

Endpoint

Disco

WSDL

中文简体字 <->繁体字转换Web Service

Endpoint

Disco

WSDL

中文 <-> 英文双向翻译Web Service

Endpoint

Disco

WSDL

火车时刻表Web Service (第六次提速最新列车时刻表)

Endpoint

Disco

WSDL

中国股票行情数据Web Service(支持深圳和上海股市的基金、债券和股票)

Endpoint

Disco

WSDL

即时外汇汇率数据Web Service

Endpoint

Disco

WSDL

腾讯QQ在线状态Web Service

Endpoint

Disco

WSDL

中国电视节目预告(电视节目表)Web Service

Endpoint

Disco

WSDL

外汇-人民币即时报价Web Service

Endpoint

Disco

WSDL

中国股票行情分时走势预览缩略图Web Service

Endpoint

Disco

WSDL

国内飞机航班时刻表 Web Service

Endpoint

Disco

WSDL

中国开放式基金数据Web Service

Endpoint

Disco

WSDL

股票行情数据 Web Service(支持香港、深圳、上海基金、债券和股票;支持多股票同时查询)

Endpoint

Disco

WSDL

2、本文将选取里面的 “中国气象局” 天气查询服务作为调用演示。

Endpoint 地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

WSDL地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

3、Java 原生 JWS 客户端调用如下,更多调用方式:

import cn.com.webxml.ArrayOfString;
import cn.com.webxml.WeatherWebService;
import cn.com.webxml.WeatherWebServiceSoap;
import java.util.List;
import java.util.logging.Logger;
public class Web_service {
    //日志记录器
    public static final Logger logger = Logger.getGlobal();
    public static void main(String[] args) {
        /**1、创建实现类对象
         * */
        WeatherWebService weatherWebService = new WeatherWebService();
        /** 2、获取服务接口实例
         * 这些代码只能看着源码跟着感觉来写,因为代码完全是人家写的,对方通常也不会提供什么使用文档的
         */
        WeatherWebServiceSoap weatherWebServiceSoap = weatherWebService.getWeatherWebServiceSoap();
        /**
         *3、有了服务接口实例,就可以调用其中的方法了,这里返回值也是对方使用的对象
         */
        ArrayOfString arrayOfString = weatherWebServiceSoap.getWeatherbyCityName("长沙");
        /**
         * 4、看着源码即可轻松写出,毕竟都是程序猿,猜也猜出它的目的
         */
        List<String> stringList = arrayOfString.getString();
        int count = 1;
        for (String s : stringList) {
            System.out.println((count++) + ":::" + s);
        }
    }
}

this关键字java_Java中Socket的方法

今天的文章this关键字java_Java中Socket的方法分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/79798.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注