博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web Service(下)
阅读量:6213 次
发布时间:2019-06-21

本文共 6426 字,大约阅读时间需要 21 分钟。

4.WSDL文档

1393432-20180615114228112-1114013218.png

请求Web Service

import com.atguigu.day01_ws.ws.HelloWS;import com.atguigu.day01_ws.ws.HelloWSImplService;public class ClientTest {    public static void main(String[] args) {        HelloWSImplService factory = new HelloWSImplService();        HelloWS hellWS = factory.getHelloWSImplPort();        String result = hellWS.sayHello("BOB");        System.out.println("client "+result);    }}

WSDL文档结构

WSDL文档图解

1393432-20180615143813458-989235707.png

5.使用框架开发Web Service

Apache CXF继承了 Celtix 和 XFire 两大开源项目的精华,提供了对JAX-WS全面的支持,并且提供了多种 Binding 、DataBinding、Transport 以及各种 Format 的支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用。

Apache CXF支持的数据类型有:int、float、String、自定义类型、集合、数组、List、Set、Map。

5.1 Web Service的请求流程

1393432-20180625102207079-1667908506.png

使用Apache CXF框架开发Web Service需要将相关的jar包导入到项目的类路径下,并且客户端使用wsdl2java命令生成客户端代码。

5.2 Apache CXF的拦截器

为了在Web Service请求过程中,能动态操作请求和响应数据,Apache CXF设计了拦截器。

package org.apache.cxf.interceptor;import org.apache.cxf.message.Message;/** * Base interface for all interceptors. */public interface Interceptor
{ /** * Intercepts a message. * Interceptors should NOT invoke handleMessage or handleFault * on the next interceptor - the interceptor chain will * take care of this. * * @param message */ void handleMessage(T message) throws Fault; /** * Called for all interceptors (in reverse order) on which handleMessage * had been successfully invoked, when normal execution of the chain was * aborted for some reason. * * @param message */ void handleFault(T message);}

1393432-20180625113444929-63433022.png

1393432-20180625111809515-2128171772.png

5.3 用Apache CXF编写基于Spring的Web Service

5.3.1 服务器端

beans.xml

web.xml

day02_ws_cxf_spring
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
contextConfigLocation
classpath:beans.xml
org.springframework.web.context.ContextLoaderListener
CXFServlet
org.apache.cxf.transport.servlet.CXFServlet
1
CXFServlet
/*

5.3.2 客户端

client-beans.xml

测试

public class ClientTest {    public static void main(String[] args) {        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]  {"client-beans.xml"});        OrderWS orderWS = (OrderWS) context.getBean("orderClient");        Order order = orderWS.getOrderById(24);        System.out.println(order);    }}

5.4 通过Ajax请求Web Service

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
Insert title here 用户名:

5.4.1 通过JQuery请求Web Service

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
Insert title here 用户名:

5.4.2 HttpUrlConnection请求WebService

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
Insert title here 用户名:
public class HttpURLConnectionServlet extends HttpServlet {    private static final long serialVersionUID = 1L;        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        String name = request.getParameter("name");        System.out.println("doPost "+name);                String data = "
"+name+"
"; URL url = new URL("http://192.168.10.165:8888/day01_ws/datatypews"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); connection.setDoInput(true); connection.setRequestProperty("Content-Type", "text/xml;charset=utf-8"); OutputStream os = connection.getOutputStream(); os.write(data.getBytes("utf-8")); int responseCode = connection.getResponseCode(); if(responseCode==200) { InputStream is = connection.getInputStream();//String xml System.out.println("return "+is.available()); response.setContentType("text/xml;charset=utf-8"); ServletOutputStream outputStream = response.getOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while((len=is.read(buffer))>0) { outputStream.write(buffer, 0, len); } outputStream.flush(); } }}

转载于:https://www.cnblogs.com/gzhjj/p/9186036.html

你可能感兴趣的文章
模块调用
查看>>
java中遍历MAP的几种方法
查看>>
浅谈 Object.observe
查看>>
mysqld服务器系统变量和状态变量
查看>>
自己动手写计算器v1.1
查看>>
程序进程逐步显示,并可以控制停止和继续以及跳转
查看>>
codevs2894、2837、1669、2503、3231
查看>>
HashMap和Hashtable的区别
查看>>
Extjs 分页实例 后台php
查看>>
用MathType编辑反三角函数的方法
查看>>
TVS管性能及选型总结
查看>>
【Go语言】错误与异常处理机制
查看>>
判断数组有哪些方法
查看>>
Firefox 在LR录制过程中添加例外的问题解决方法
查看>>
quartz表达式
查看>>
对空类型求sizeof
查看>>
购物车 python作业
查看>>
Nodejs与ES6系列4:ES6中的类
查看>>
邻接表 - 边表
查看>>
linux下源码安装rabbitMq
查看>>