vue 调用webservice_调用webService的几种方式

时间: 2023-08-15 admin 互联网

vue 调用webservice_调用webService的几种方式

vue 调用webservice_调用webService的几种方式

转自:

一、概览

方式1:

HttpClient:可以用来调用webservie服务,也可以抓取网页数据

版本1:HttpClient3.0.x

版本2:HttpClient4.x.x(目前最新4.5.2)

这2个版本的使用方式不一样;变动较大

方式2:纯Java(自带API)      jws

方式3:cxf框架

方式4:axis2框架

准备工作:

1.了解wsimport        java自带的一个命令(建议使用jdk7,稳定支持)

作用:将wsdl文件生成本地代理(java代码),方便调用

语法  wsimport [opations]

- wsdl_uri:wsdl 的统一资源标识符

- d  :指定要输出的文件的位置

- s  :表示要解析java的源码 ,默认解析出的是class字节码

- p  : 指定输出的包名

1. 获取服务路径:比如

.asmx?WSDL

2. 获取wsdl文件.建议使用JDK1.6以上的版本的wsimport命令

进入dos的桌面:

方式1:wsimport .asmx?WSDL

这种默认只会生成class,且会生成默认的包

方式2:生成源码,指定包和路径

wsimport -s ./ -p cn.aa .asmx?WSDL

3.可以把class文件打成jar包 jar cvf  test.jar  打包目录

4.放在你的项目中进行调用:

public static void main(String[] args) {

MobileCodeWS mobileCodeWs=new MobileCodeWS();

MobileCodeWSSoap mobileCodeWSSoap=mobileCodeWs.getMobileCodeWSSoap();

String tel=mobileCodeWSSoap.getMobileCodeInfo("183735xxxx",null);

System.out.println(tel);

}

2.规范了解

JAVA 中共有三种WebService 规范,分别是JAX-WS(JAX-RPC)、JAXM&SAAJ、JAX-RS。

1. Jaxws(掌握)

JAX-WS  的全称为 JavaAPI for XML-Based Webservices ,早期的基于SOAP 的JAVA 的Web 服务规范JAX-RPC(javaAPI For XML-RemoteProcedure Call)目前已经被JAX-WS 规范取代。从java5开始支持JAX-WS2.0版本,Jdk1.6.0_13以后的版本支持2.1版本,jdk1.7支持2.2版本。

Jaxws开发的webservice传输soap协议。

2JAXM&SAAJ(了解)

JAXM(JAVA API For XML Message)主要定义了包含了发送和接收消息所需的API,SAAJ(SOAP With Attachment APIFor Java,JSR 67)是与JAXM 搭配使用的API,为构建SOAP 包和解析SOAP 包提供了重要的支持,支持附件传输等,JAXM&SAAJ 与JAX-WS 都是基于SOAP 的Web 服务,相比之下JAXM&SAAJ 暴漏了SOAP更多的底层细节,编码比较麻烦,而JAX-WS 更加抽象,隐藏了更多的细节,更加面向对象,实现起来你基本上不需要关心SOAP 的任何细节

3.  JAX-RS(掌握)

JAX-RS 是JAVA 针对REST(Representation State Transfer)风格制定的一套Web 服务规范,由于推出的较晚,该规范(JSR 311,目前JAX-RS 的版本为1.0)并未随JDK1.6 一起发行。

Rest定义可以自行搜索

jax-RS可以发布 rest风格webservice,因为rest的webservice不采用soap传输,直接采用http传输,可以返回xml或json,比较轻量。

以后可能会流行Rest风格的

二、简单例子

1.httpClient3.x.x

此方式不需要wsimport命令

// 通过Http-Client 框架来模拟实现 Http请求--get

public static String getMobileCodeInfo1(String mobileCode, String userID)

throws HttpException, IOException {

HttpClient client = new HttpClient();

GetMethod getMethod=new GetMethod(".asmx/getMobileCodeInfo?mobileCode="

+ mobileCode + "&userID=" + userID);

//执行,得到消息码

int code = client.executeMethod(getMethod);

System.out.println("消息码:"+code);

String result="";

if (code==HttpURLConnection.HTTP_OK) {

//得到执行结果

result = getMethod.getResponseBodyAsString();

System.out.println(result);

}

return result;

}

// 通过Http-Client 框架来模拟实现 Http请求--post

// 需要导入3个jar包,本demo的jar包版本是3.1.0

// 目前最新的是4.5.2,使用方式也发生了变化

public static String getMobileCodeInfo2(String mobileCode, String userID)

throws HttpException, IOException {

// 输入服务网址

HttpClient client = new HttpClient();

// GetMethod

PostMethod post = new PostMethod(

".asmx/getMobileCodeInfo");

// 设置参数

post.setParameter("mobileCode", mobileCode);

post.setParameter("userID", userID);

// client.setTimeout(newTimeoutInMilliseconds);

// 执行,返回一个结果码

int code = client.executeMethod(post);

System.out.println("结果码:" + code);

// 获取xml结果

String result = post.getResponseBodyAsString();

System.out.println("结果:" + result);

//释放连接

post.releaseConnection();

return result;

}

// Post请求 :通过Http-Client 框架来模拟实现 Http请求

//从xml中获取请求参数

//SOAP1.1方式

//问题:soap怎么定义,这里已经返回接结果,但是没有手机号信息,也就返回的结果匹配,不知道为什么

//估计是配置文件有问题

//soap1.1

@Test

public void soap() throws Exception{

HttpClient client=new HttpClient();

PostMethod postMethod=new PostMethod(".asmx");