webservice 菜鸟探索之旅

Posted 小娜啊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webservice 菜鸟探索之旅相关的知识,希望对你有一定的参考价值。

项目背景

  接到的任务是通过调用其他平台厂商提供的webservice接口来获取他们的图片数据把图片下载下来录入我司平台。之前没有接触过webservice,所以开始了这次webservice的菜鸟之旅。

一.首先去百度查了查简单搭建了一个webservice的服务端和客户端的小demo,用来了解它的工作流程

服务端搭建

1.新建一个java项目,目录如下

2.新建个类,加注解@WebService,主要内容如下

package webservice_serverDemo;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService  
public class Test {
    /** 供客户端调用方法  该方法是非静态的,会被发布
     * @param name  传入参数
     * @return String 返回结果
     * */
    public String getValue(String name){
        return "欢迎你! "+name;
    }

    /**
     * 方法上加@WebMentod(exclude=true)后,此方法不被发布;
     * @param name
     * @return
     */
    @WebMethod(exclude=true)  
    public String getHello(String name){
        return "你好! "+name;
    }

    /** 静态方法不会被发布
     * @param name
     * @return
     */
    public static String getString(String name){
        return "再见!"+name;
    }

    //通过EndPoint(端点服务)发布一个WebService
   public static void main(String[] args) {
    /*参数:1,本地的服务地址;
          2,提供服务的类;
     */
    Endpoint.publish("http://127.0.0.1:8080/Test", new Test());
    System.out.println("发布成功!");
    //发布成功后 在浏览器输入 http://localhost:8080/Test?wsdl
   }

}

3.运行主方法,控制台显示发布成功

 4.浏览器输入 http://localhost:8080/Test?wsdl 可以看到生成的wsdl文件,服务端搭建完毕

客户端搭建

1.新建一个java工程

2.点击工程右键>New>Other>Web service client>填写wsdl地址如下图(确保服务端不要关闭,浏览器访问地址能看到xml)也可以填写的是一个wsdl文件的路径

 

 finish之后就会发现在src下生成了客户端的文件夹和java类,这时候就可以在客户端调用接口了

调用一下试试

package webservice_serverDemo;

import java.rmi.RemoteException;
import java.util.Iterator;

import javax.xml.rpc.ServiceException;

public class Hello {
    public static void main(String []args) throws RemoteException, ServiceException{
        TestServiceLocator test = new TestServiceLocator();
        Test ports = test.getTestPort();
        System.out.println(ports.getValue("小娜"));
    }

}

控制台输出,可以看到有一个警告是因为缺少mail.jar和activation.jar,可以自己下载,不加也没有特别大的影响

 

 

 回归到项目

  通过上面的小demo可以看出,eclipse能根据wsdl自动生成客户端来调用,非常简单。but,通过平台厂商反馈的wsdl文件发现,由于他们系统十分老旧,生成的wsdl无法用这种方法生成客户端,于是换了一种方法,使用axis1.4生成客户端

1.下载axis-bin-1_4.zip jar包,解压

2.进入lib目录下打开cmd 运行

D:\\soft\\axis-1_4\\lib>java -Djava.ext.dirs=D:\\soft\\axis-1_4\\lib org.apache.axis.wsdl.WSDL2Java -o D:\\zhuhai -p com.ws D:\\soft\\axis-1_4\\RequestService.wsdl

//java -Djava.ext.dirs=${lib的目录} org.apache.axis.wsdl.WSDL2Java -o${代码输出路径}  -p${package名} ${wsdl的路径(可以是绝对路径或者url)}

会报一个这个警告,没有关系,上面提过

- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.

3.去${代码输出路径}里可以找到生成的客户端

以上是关于webservice 菜鸟探索之旅的主要内容,如果未能解决你的问题,请参考以下文章

WebService学习之旅使用Apache Axis2实现WebService客户端调用

菜鸟的Android学习之旅

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

Java学习之旅:探索extends

Kotlin学习之旅解决错误:kotlin.NotImplementedError: An operation is not implemented: Not yet implemented(代码片段

菜鸟教程--Web Services 教程