Java Servlet代理WebService请求
来源:互联网 发布:谷歌读屏软件下载 编辑:程序博客网 时间:2024/06/08 06:40
相信大家在日常的工作中可能会遇到在Java里调用.Net发布的WebService的问题,或者在JS前端调用WebService各种不方便的问题。本文将手把手教大家如何在Java中调用.Net发布的WebService,然后再发布为servlet,供Ajax等客户端方便调用。
一、下载axis-1_4并获取jar包
从官网下载axis_1_4.jar,从lib子文件夹中获取如下jar包:
axis.jar
axis-ant.jar
commons-discovery-0.2.jar
commons-logging-1.0.4.jar
jaxrpc.jar
log4j.properties
log4j-1.2.8.jar
saaj.jar
wsdl4j-1.5.1.jar
二、新建web工程
1、在eclipse里新建一个Dynamic Web Project,如下图所示:
2、将站点命名为AxisClient:
3、一直单击“Next”按钮直到出现如下图所示的窗口:
4、将上图中红框部分的复选框选中后,单击“Finish”即可完成工程创建。
三、添加jar包引用
1、在工程名称上单击右键,选择“Properties”,打开如下图所示对话框:
2、在上图中,选择左侧的“Java Build Path”,切换到“Libraries”选项卡,再单击右侧的“Add External JARs...”按钮,找到一开始下载的axis组件包,将组件包添加到工程引用里,如下图所示:
3、单击“OK”按钮完成引用。
四、新建servlet
1、为工程创建package,如“com.axisclient.service”
2、在新创建的package上单击右键,选择“New/Servlet”,并起名为“ClientService”:
单击“Finish”完成Servlet创建。
五、新建部署的web服务器
1、在Servers选项卡中单击“new server wizard”链接,打开如下图所示的对话框:
2、以Tomcat7为例,在上面的“Apache”目录下选择“Tomcat v7.0 Server”,再单击“Next”,打开如下图所示对话框:
3、在上图中单击“Browse”找到Tomcat7所在的目录,再单击“JRE”下方的下拉列表,选择1.7版本的JDK。
再单击“Finish”即可。
4、配置Tomcat
在Servers选项卡中双击新创建的Tomcat Server,打开如下图所示的页面:
在该页面中,在“Server Location”区域选择“Use Tomcat installation”,并将Deploy path设置为“webapps”,否则站点会被部署到eclipse自带的tomcat中,很难被找到。
设置完毕后按下Ctrl+S组合键保存配置信息。
六、添加对服务器运行时组件包的引用
1、打开工程的Properties窗口中的Java Build Path/Libraries选项卡
2、单击右侧的“Add Library”按钮打开如下图所示的窗口:
3、在上图中选择“Serverr Runtime”打开如下图所示的对话框:
4、在上图中选择“Apache Tomcat v7.0”后单击“Finish”关闭对话框,再在父对话框中单击“OK”完成对服务器运行时组件的引用。
七、编写代码
1、在ClientService.java中添加如下代码:
package com.axisclient.service;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*----------以下是对Axis的引用-----------*/import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import org.apache.axis.client.Call; import org.apache.axis.client.Service; import org.apache.axis.encoding.XMLType; import java.util.Vector;/*--------------End----------------*//** * Servlet implementation class ClientService */@WebServlet("/ClientService")public class ClientService extends HttpServlet { private static final long serialVersionUID = 1L; /** * Default constructor. */ public ClientService() { // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String strName = request.getParameter("name"); //获取用户传入的参数 String iAge = request.getParameter("age"); String method = "MakeUser"; // 定义服务 Service service = new Service(); Call call = null; try{ call = (Call) service.createCall(); }catch(Exception e){ } call.setTargetEndpointAddress(new java.net.URL( //设置要调用的WebService地址 "http://localhost/WebServiceTest/Service.asmx")); call.setUseSOAPAction(true); call.setEncodingStyle(null); call.setReturnType(new QName("http://tempuri.org/",method), Vector.class); //设置WebService的返回类型 call.setOperationName(new QName("http://tempuri.org/", method)); //设置要调用的WebService方法 call.setSOAPActionURI("http://tempuri.org/"+method); call.addParameter(new QName("http://tempuri.org/", "Name"), //设置传递给WebService方法的参数 org.apache.axis.encoding.XMLType.XSD_STRING, ParameterMode.IN); call.addParameter(new QName("http://tempuri.org/", "age"), //如果有多个参数,分别调用call的addParameter设置参数即可 org.apache.axis.encoding.XMLType.XSD_INT, ParameterMode.IN); Vector retVal1 = (Vector) call.invoke(new Object[] {strName, iAge}); //传入参数值并调用WebService。这里将返回值设置为Vector就可以应对对多种返回值类型,否则会报错 response.setContentType("text/xml"); response.setCharacterEncoding("UTF-8"); String strResult="<?xml version='1.0' encoding='UTF-8'?><result><Name>" + retVal1.toString().substring(1,retVal1.toString().indexOf(',')) + "</Name><Age>"+retVal1.toString().substring(retVal1.toString().indexOf(',')+1,retVal1.toString().indexOf(']'))+"</Age></result>"; //将WebService返回的结果再次组合为一个xml返回给Servlet调用者 response.getWriter().write(strResult); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request, response); //对于Post请求按照Get请求相同的方式处理 }}
2、配置Servlet
打开WEB-INF/web.xml文件,在其中加入如下配置信息:
<servlet><servlet-name>wsclientservice</servlet-name><servlet-class>com.axisclient.service.ClientService</servlet-class></servlet><servlet-mapping><servlet-name>wsclientservice</servlet-name><url-pattern>/service/wsclientservice</url-pattern></servlet-mapping>
八、发布站点
1、打开打开工程的Properties窗口中的“Deplolyment Assembly”对话框:
2、在上图的右侧单击“Add”按钮打开“New Assembly Directive”对话框,并选择“Java Build Path Entries”,再单击“Finish”按钮,打开如下图所示对话框:
3、在上图中选中所有的jar包,单击“Finish”后再单击父对话框的“OK”按钮完成对组件包的部署依赖,否则站点部署后会缺失依赖的组件包。
4、在Tomcat Server上单击右键,选择“Add and Remove”,打开如下图所示对话框:
在上图中选中左侧的站点名后单击“Add”按钮将站点添加到右侧的Configured列表,再单击“Finish”按钮完成对站点的部署配置。
5、发布站点
在Tomcat Server上单击右键,选择“Publish”
6、启动站点
九、测试Servlet
在浏览器中输入地址http://localhost:8082/AxisClient/service/wsclientservice?name=Mary&age=58并单击回车,如果出现类似于如下的内容就说明调用WebService成功:
- Java Servlet代理WebService请求
- java中 发起请求到servlet 或者 Webservice
- java webservice客户端请求
- java请求webservice接口
- java 请求 servlet
- WebService学习笔记-Ajax通过servlet请求跨域Webservice
- Java-WebService 调用 设置 代理
- Java WebService请求方法介绍
- Java WebService查看请求报文
- Java Post 请求Webservice 返回XML
- java 请求响应soap(webService)
- java webservice soap消息请求例子
- 动态代理(Dynamic Proxy)Java Servlet
- WebService请求
- java代理请求http(实例)
- java使用代理发送http请求
- java使用代理发送http请求
- java请求http连接(servlet)类
- <!DOCTYPE>的作用和使用
- Java学习笔记31
- design_pattern_facade
- 区间覆盖问题(贪心)
- 欢迎使用CSDN-markdown编辑器
- Java Servlet代理WebService请求
- 3.8日
- spring3使用task注记及task:annotation-driven解决定时问题
- UIDatePicker 使用详解
- 递归算法的时间复杂度终结篇
- C语言中常见的宏定义笔试/面试题
- 把一个字符串转化成整数
- UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
- Android学习总结八:Cursor游标