android调用web service(cxf)实例应用详解

Android调用Web Service(CXF)实例应用详解

目录

前言

在 Android 开发中,需要调用 Web Service 的场景比较常见。Apache CXF 是一个开源的 Web Service 框架,支持多种协议,包括 SOAP、REST 和 XML/HTTP。本文将介绍使用 Apache CXF 调用 Web Service 的具体步骤,并提供两个示例,演示如何在 Android 应用中调用 Web Service。

步骤

在使用 Apache CXF 调用 Web Service 的过程中,需要完成以下几个步骤。

步骤一:创建 Web Service

在本文中,我们将使用 Eclipse 创建一个简单的 Web Service。具体步骤如下:

  1. 在 Eclipse 中选择“New Project”菜单,创建一个 Java Web 工程。
  2. 在 src 目录下创建一个 Java 类,命名为 WeatherService。
  3. 在 WeatherService 类中添加一个方法,用于获取天气信息。

java
public String getWeatherInfo(String city) {
String result = "";
try {
URL url = new URL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx");
QName qname = new QName("http://WebXml.com.cn/", "WeatherWebServiceSoap");
Service service = Service.create(url, qname);
WeatherWebServiceSoap soap = service.getPort(WeatherWebServiceSoap.class);
result = soap.getWeatherbyCityName(city);
} catch (MalformedURLException e) {
e.printStackTrace();
}
return result;
}

  1. 在 WeatherService 类上右键,选择“Web Services”->“Create Web Service”。
  2. 在“Create Web Service”向导中,选择“Bottom Up Java Web Service”类型,指定 WeatherService 类为服务实现类。
  3. 点击“Next”继续,选择“Apache CXF 2.x”作为 Web Service 框架,点击“Finish”完成 Web Service 创建。

步骤二:创建 Android 工程

在 Android Studio 中创建一个空白项目。

步骤三:修改 AndroidManifest.xml 文件

将以下权限添加到 AndroidManifest.xml 文件中:

<uses-permission android:name="android.permission.INTERNET" />

步骤四:导入 CXF 库文件

将以下库文件添加到 Android 工程中:

  • cxf-core-3.1.6.jar
  • cxf-rt-bindings-soap-3.1.6.jar
  • cxf-rt-frontend-jaxws-3.1.6.jar
  • cxf-rt-transports-http-3.1.6.jar

步骤五:创建 Web Service 的代理类

在 Android 工程中创建一个名为 WeatherServiceProxy 的类,并在该类中添加以下代码:

public class WeatherServiceProxy {
  private WeatherWebServiceSoap weatherWebService;

  public WeatherServiceProxy() {
    URL url = null;
    try {
      url = new URL("http://10.0.2.2:8080/WeatherService/services/WeatherService?wsdl");
      QName qname = new QName("http://WebXml.com.cn/", "WeatherWebServiceSoap");
      Service service = Service.create(url, qname);
      weatherWebService = service.getPort(WeatherWebServiceSoap.class);
    } catch (MalformedURLException e) {
      e.printStackTrace();
    }
  }

  public String getWeatherInfo(String city) {
    return weatherWebService.getWeatherbyCityName(city);
  }
}

其中,“http://10.0.2.2:8080/WeatherService/services/WeatherService?wsdl”是刚刚创建的 Web Service 的访问地址。

步骤六:调用 Web Service

在 MainActivity 中,添加以下代码:

public class MainActivity extends AppCompatActivity {

  private EditText cityEditText;
  private Button queryButton;
  private TextView resultTextView;

  private WeatherServiceProxy weatherServiceProxy;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    cityEditText = (EditText) findViewById(R.id.cityEditText);
    queryButton = (Button) findViewById(R.id.queryButton);
    resultTextView = (TextView) findViewById(R.id.resultTextView);

    weatherServiceProxy = new WeatherServiceProxy();

    queryButton.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        String city = cityEditText.getText().toString();
        String result = weatherServiceProxy.getWeatherInfo(city);
        resultTextView.setText(result);
      }
    });
  }
}

其中,“http://10.0.2.2:8080/WeatherService/services/WeatherService?wsdl”是刚刚创建的 Web Service 的访问地址。

至此,使用 Apache CXF 调用 Web Service 就完成了。

示例说明

下面将提供两个示例,演示如何在 Android 应用中调用 Web Service。

示例 1:获取天气信息

Web Service 实现

参考步骤一中的步骤创建 WeatherService。

Android 工程实现

在 MainActivity 中,添加以下代码:

public class MainActivity extends AppCompatActivity {

  private EditText cityEditText;
  private Button queryButton;
  private TextView resultTextView;

  private WeatherServiceProxy weatherServiceProxy;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    cityEditText = (EditText) findViewById(R.id.cityEditText);
    queryButton = (Button) findViewById(R.id.queryButton);
    resultTextView = (TextView) findViewById(R.id.resultTextView);

    weatherServiceProxy = new WeatherServiceProxy();

    queryButton.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        String city = cityEditText.getText().toString();
        String result = weatherServiceProxy.getWeatherInfo(city);
        resultTextView.setText(result);
      }
    });
  }
}

其中,“WeatherServiceProxy”是刚刚创建的代理类。

示例 2:获取汽车信息

Web Service 实现

  1. 在 src 目录下创建一个 Java 类,命名为 CarService。
  2. 在 CarService 类中添加一个方法,用于获取汽车信息。

java
public String getCarInfo(String code) {
String result = "";
try {
URL url = new URL("http://www.webxml.com.cn/WebServices/CarInfoWebService.asmx");
QName qname = new QName("http://tempuri.org/", "CarInfoWebServiceSoap");
Service service = Service.create(url, qname);
CarInfoWebServiceSoap soap = service.getPort(CarInfoWebServiceSoap.class);
result = soap.getCarInfo(code, "");
} catch (MalformedURLException e) {
e.printStackTrace();
}
return result;
}

  1. 在 CarService 类上右键,选择“Web Services”->“Create Web Service”。
  2. 在“Create Web Service”向导中,选择“Bottom Up Java Web Service”类型,指定 CarService 类为服务实现类。
  3. 点击“Next”继续,选择“Apache CXF 2.x”作为 Web Service 框架,点击“Finish”完成 Web Service 创建。

Android 工程实现

在 MainActivity 中,添加以下代码:

public class MainActivity extends AppCompatActivity {

  private EditText codeEditText;
  private Button queryButton;
  private TextView resultTextView;

  private CarServiceProxy carServiceProxy;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    codeEditText = (EditText) findViewById(R.id.codeEditText);
    queryButton = (Button) findViewById(R.id.queryButton);
    resultTextView = (TextView) findViewById(R.id.resultTextView);

    carServiceProxy = new CarServiceProxy();

    queryButton.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        String city = codeEditText.getText().toString();
        String result = carServiceProxy.getCarInfo(code);
        resultTextView.setText(result);
      }
    });
  }
}

其中,“CarServiceProxy”是刚刚创建的代理类。

总结

本文介绍了使用 Apache CXF 调用 Web Service 的具体步骤,并提供了两个示例。希望对初学者有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:android调用web service(cxf)实例应用详解 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Java面向对象之类的继承介绍

    Java面向对象之类的继承介绍 一、概述 Java作为一门面向对象的编程语言,继承(Inheritance)是其面向对象编程的基石之一。继承是指在一个类的基础上,衍生出一个新的类,新的类继承了原有类的属性和方法。 二、继承的语法 Java中继承的语法如下: class ChildClass extends ParentClass { // 子类的其他属性和方…

    other 2023年6月26日
    00
  • java中lombok的@Data引发问题详解

    Java中Lombok的@Data引发问题详解 引言 Lombok是一个Java库,可以自动为Java类生成一些标准的方法(如 equals(), hashCode(), toString() 等),以减少样板代码的编写。其中,@Data是Lombok中一种常用的注解,作用是自动生成JavaBean中的getter/setter方法、hashCode/equ…

    other 2023年6月27日
    00
  • vbscript基础篇 – vbs变量定义与使用方法

    当然!下面是关于\”VBScript基础篇 – VBScript变量定义与使用方法\”的完整攻略,包含两个示例说明。 VBScript变量定义与使用方法 在VBScript中,变量用于存储和操作数据。下面是VBScript中变量的定义和使用方法: 变量定义 在VBScript中,可以使用Dim关键字来定义变量。变量名必须以字母开头,并且可以包含字母、数字和下…

    other 2023年8月20日
    00
  • springboot集成mybatis配置

    Spring Boot是一个快速开发框架,可以帮助开发人员快速构建基于Spring的应用程序。MyBatis是一个流行的ORM框架,可以帮助开发人员松地访问数据库。在本攻略中,我们介绍如何在Spring Boot应用程序中集成MyBatis,并配置MyBatis以访问。 步骤1:添加MyBatis和数据库驱动依赖 在pom.xml文件中添加以下依赖: &lt…

    other 2023年5月7日
    00
  • 教你如何在优麒麟上搭建 RISC-V 交叉编译环境

    下面是在优麒麟上搭建 RISC-V 交叉编译环境的攻略: 1. 安装必要的软件 首先需要安装以下软件:- build-essential- git- gcc-8-riscv64-linux-gnu- qemu 可以通过以下命令安装: sudo apt-get install build-essential git gcc-8-riscv64-linux-gn…

    other 2023年6月26日
    00
  • Go语言使用HTTP包创建WEB服务器的方法

    下面是“Go语言使用HTTP包创建WEB服务器的方法”的完整攻略。 1. 创建一个基础的WEB服务器 首先,我们需要导入Go语言中的 http 包,并创建一个 http.HandleFunc() 函数来处理用户的请求。以下是创建一个基础的WEB服务器的代码示例: package main import ( "fmt" "net/…

    other 2023年6月27日
    00
  • matlab读写图片 读取图像序列 读取avi视频

    Matlab读写图片:读取图像序列、读取AVI视频 Matlab是一种常用于科学计算、工程技术等领域的高级编程语言和交互式环境。Matlab提供了丰富的图像处理工具箱,便于用户进行图像处理与分析。本篇文章将介绍Matlab如何读写图片,包括读取图像序列和读取AVI视频。 读取图像序列 图像序列是指一堆按照时间顺序排列的图像,比如连续摄像生成的图像序列或扫描仪…

    其他 2023年3月28日
    00
  • Python多线程原理与用法实例剖析

    Python多线程原理与用法实例剖析 什么是多线程? 在计算机科学中,线程是在单个程序中同时执行的一条指令序列。通常,单个程序可以拥有多个线程,这些线程共享程序的文件和数据,每个线程都可独立地执行指令。多线程使程序能够同时执行多个任务。 Python多线程原理 Python提供了threading模块来实现多线程。在Python中,每个线程都有一个锁,这个锁…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部