java 调用web service_Java调用Web Service实例

Web Service作为一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,广泛应用于分布式的交互操作应用程序的开发。而Java作为目前最流行的开发语言,使用Java调用Web Service是我们学习Web Service的基础。本文我们就来通过Java调用Web Service实例,更加深入地来学习Web Service。

下面我们通过二个方面来介绍Java调用Web Service实例。

一、根据wsdl生成Java类

1.java环境配置

下载安装java,并将jdk和jre配置到系统环境变量中。(java 1.8, tomcat 7.0)因为要使用wsimport命令,所以建议使用JAVA_HOME和CLASS_PATH的方式配置,以确保wsimport命令全局访问。

2.获取wsdl文件

使用 Web服务地址 选择需要的web服务类型

以天气服务为例:天气服务wsdl文档地址

右键另存为到本地,修改wsdl文档的部分内容:将 替换成 ,此文档一共有三处修改,不要遗漏。

使用wsimport命令生成Java类

wsimport -keep -d .class文件的输出目录 -s .java文件的输出目录 wsdl文档位置。运行后,在指定的输出目录可以看到生成的java文件。

以上方法是针对wsdl文档由.net开发的文档,需要修改其内容,再生成Java文件,对于非.net开发的,例如手机归属地查询,可以直接使用网络地址生成Java文件:

wsimport -keep -d .class文件的输出目录 -s .java文件的输出目录 http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?wsdl

利用文件生成java文件的方式,切记不要删除.wsdl文件或更改位置,因为.wsdl文件的位置会写到java文件中,如果找不到.wsdl文件会编译不通过。

二、调用Web Service接口

在eclipse中新建web项目,并配置Tomcat服务,将第一步的java文件拷贝到项目的src目录中。

在src目录中新建自己的类,代码如下:

package demo;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

import cn.com.webxml.ArrayOfString;

import cn.com.webxml.WeatherWS;

import cn.com.webxml.WeatherWSSoap;

@WebServlet(name = "ToolServlet", urlPatterns = "/Tool.do")

public class Select extends HttpServlet{

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

String func = request.getParameter("func");

String str = request.getParameter("str");

switch(func){

case "weather" :

response.getWriter().write(weather(str));

break;

}

}

public String weather(String str) {

WeatherWS factory = new WeatherWS(); // 创建一个WeatherWS工厂

WeatherWSSoap weatherWSSoap = factory.getWeatherWSSoap(); // 根据工厂创建一个WeatherWSSoap对象

ArrayOfString weatherInfo = weatherWSSoap.getWeather(str, null); // 调用WebService提供的getWeather方法

List lstWeatherInfo = weatherInfo.getString();

String weather_str = lstWeatherInfo.get(4); // 返回天气信息中的某一条

return weather_str;

}

}

前端jsp页面,js代码入下:

jsp页面与java类之间传递中文参数时候会乱码

(1)在eclipse中设置项目编码为UTF-8,参考eclipse设置编码格式为utf-8

(2)在server.xml中配置编码格式,添加URIEncoding="UTF-8";

(3)在java类中返回数据之前,添加response.setContentType("text/html;charset=UTF-8");

调用Web Service接口提供的方法时,报错未将参数对象实例化

比如查询火车信息的Web Service接口,将方法的第二个参数null改为空字符串。

public String train(String str) {

TrainTimeWebService factory = new TrainTimeWebService();

TrainTimeWebServiceSoap trainTimeWebServiceSoap = factory.getTrainTimeWebServiceSoap();

//ArrayOfString trainInfo = trainTimeWebServiceSoap.getStationAndTimeByTrainCode(str, null);

ArrayOfString trainInfo = trainTimeWebServiceSoap.getStationAndTimeByTrainCode(str, "");

List lsttrainInfo = trainInfo.getString();

return res;

}

我们看完了JAVA 调用Web Service实例,可能需要一点时间去慢慢消化,将这些知识点化为己用。如果觉得很难消化的话,可以观看本站的Web Service视频教程,里面还有更加详细的讲解和实例,只要稍加练习,熟练掌握Web Service技术不是梦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值