android 调用 WebService

Android调用C#的WebService 弄了两天,搞清楚Android怎么调用C#的WebService,就把整个过程写下,也欢迎各位看官拍砖! 一.看WSDL文档,获得的参数可用于调用WebService的具体步骤 在开始调用WebServic之前,我们要看WebService所提供的WSDL文档,那WSDL文档又在哪?一般的话,我们可以在WebServcie提供的网址后加上:?wsdl  比如:ScauCS.NET作业管理系统 阅读详情

WebService是一种基于SOAP协议的远程调用标准,通过webservice可以将不同操作系统平台、不同语言、不同技术整合到一块。在Android SDK中并没有提供调用WebService的库,因此,需要使用第三方的SDK来调用WebService。PC版本的WEbservice客户端库非常丰富,例如Axis2,CXF等,但这些开发包对于Android系统过于庞大,也未必很容易移植到Android系统中。因此,这些开发包并不是在我们的考虑范围内。适合手机的WebService客户端的SDK有一些,比较常用的有Ksoap2,可以从http://code.google.com/p/ksoap2-android/downloads/list进行下载;将下载的ksoap2-android-assembly-2.4-jar-with-dependencies.jar包复制到Eclipse工程的lib目录中,当然也可以放在其他的目录里。同时在Eclipse工程中引用这个jar包。

具体调用调用webservice的方法为:

(1) 指定webservice的命名空间和调用的方法名,如:

SoapObject request =new SoapObject(http://service,”getName”);

SoapObject类的第一个参数表示WebService的命名空间,可以从WSDL文档中找到WebService的命名空间。第二个参数表示要调用的WebService方法名。

(2) 设置调用方法的参数值,如果没有参数,可以省略,设置方法的参数值的代码如下:

Request.addProperty(“param1”,”value”);
Request.addProperty(“param2”,”value”);

要注意的是,addProperty方法的第1个参数虽然表示调用方法的参数名,但该参数值并不一定与服务端的WebService类中的方法参数名一致,只要设置参数的顺序一致即可。

(3) 生成调用Webservice方法的SOAP请求信息。该信息由SoapSerializationEnvelope对象描述,代码为:

SoapSerializationEnvelope envelope=new 
SoapSerializationEnvelope(SoapEnvelope.VER11);
Envelope.bodyOut = request;

创建SoapSerializationEnvelope对象时需要通过SoapSerializationEnvelope类的构造方法设置SOAP协议的版本号。该版本号需要根据服务端WebService的版本号设置。在创建SoapSerializationEnvelope对象后,不要忘了设置SOAPSoapSerializationEnvelope类的bodyOut属性,该属性的值就是在第一步创建的SoapObject对象。

(4) 创建HttpTransportsSE对象。通过HttpTransportsSE类的构造方法可以指定WebService的WSDL文档的URL:

HttpTransportSE ht=new HttpTransportSE(“http://192.168.18.17:80
/axis2/service/SearchNewsService?wsdl”);

(5)使用call方法调用WebService方法,代码:

ht.call(null,envelope);

Call方法的第一个参数一般为null,第2个参数就是在第3步创建的SoapSerializationEnvelope对象。

(6)使用getResponse方法获得WebService方法的返回结果,代码:

SoapObject soapObject =( SoapObject) envelope.getResponse();

以下为简单的实现一个天气查看功能的例子:

public class WebService extends Activity {  
private static final String NAMESPACE = "http://WebXml.com.cn/";  
// WebService地址  
private static String URL = "http://www.webxml.com.cn/
webservices/weatherwebservice.asmx";  
private static final String METHOD_NAME = "getWeatherbyCityName";  
private static String SOAP_ACTION = "http://WebXml.com.cn/
getWeatherbyCityName";  

private String weatherToday;  

private Button okButton;  
private SoapObject detail;  

@Override  
public void onCreate(Bundle savedInstanceState) {  
  super.onCreate(savedInstanceState);  
  setContentView(R.layout.main);  
  okButton = (Button) findViewById(R.id.ok);  

  okButton.setOnClickListener(new Button.OnClickListener() {  
	  public void onClick(View v) {  
		 showWeather();  
	  }  
  });  
}  

private void showWeather() {  
  String city = "武汉";  
  getWeather(city);  
}  

@SuppressWarnings("deprecation")  
public void getWeather(String cityName) {  
try {  
 System.out.println("rpc------");  
  SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);  
  System.out.println("rpc" + rpc);  
  System.out.println("cityName is " + cityName);  
 rpc.addProperty("theCityName", cityName);  

  AndroidHttpTransport ht = new AndroidHttpTransport(URL);  
  ht.debug = true;  

SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(  
		  SoapEnvelope.VER11);  

  envelope.bodyOut = rpc;  
  envelope.dotNet = true;  
 envelope.setOutputSoapObject(rpc);  

  ht.call(SOAP_ACTION, envelope);  

 SoapObject result = (SoapObject) envelope.bodyIn;  
  detail = (SoapObject) result  
		  .getProperty("getWeatherbyCityNameResult");  

  System.out.println("result" + result);  
  System.out.println("detail" + detail);  
  Toast.makeText(WebService.this, detail.toString(),  
		 Toast.LENGTH_LONG).show();  
  parseWeather(detail);  

  return;  
} catch (Exception e) {  
  e.printStackTrace();  
  }  
}  

private void parseWeather(SoapObject detail)  
	  throws UnsupportedEncodingException {  
  String date = detail.getProperty(6).toString();  
  weatherToday = "今天:" + date.split(" ")[0];  
  weatherToday = weatherToday + "\n天气:" + date.split(" ")[1];  
  weatherToday = weatherToday + "\n气温:"  
		  + detail.getProperty(5).toString();  
 weatherToday = weatherToday + "\n风力:"  
		  + detail.getProperty(7).toString() + "\n";  
  System.out.println("weatherToday is " + weatherToday);  
  Toast.makeText(WebService.this, weatherToday, 
  Toast.LENGTH_LONG).show();  

 }  
}  

Android调用WebService 最近学习的是在android端如何去调用远程WebService,都说WebService是一种基于SOAP协议的远程调用标准,对于这个协议理解不深,知道webservice可以将不同操作系统平台、不同语言、不同技术整合到一块,android SDK没有直接调用webservice的库,最常用的是借助ksoap2-android这个第三方SDK。该Demo参考《疯狂Android讲义》并做改动,希望可以帮助到初次接触Androi调用WebService的朋友 立即下载

相关推荐

安卓调用WebService服务对返回的xml解析展示

从网上寻找好久的资料,自己又整理了两个晚上。终于调通安卓调用Webservice,传参并解析XML的样例,使用工具:Android Studio和Eclipse.Eclipse启动WebServer,Android Studio进行Application编码调试。两个工程文件都在压缩包中。喜极而泣。。。

Android 之 调用 WebService

PS:如果看完上面简介还不是很清楚的话,那么就算了,之前公司就用C#搭的一个WebService!本节我们并不讨论如何去搭建一个WebService,我们仅仅知道如何去获取WebService提供的服务, 然后解析返回的XML数据,然后把相关数据显示到我们的Android设备上就好!

leyang0910的博客 999

在Android中调用WebService实例

某些情况下我们可能需要与Mysql或者Oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动然后进行数据的增删改查。我个人不推荐这种做法,一是手机毕竟不是电脑,操作大量数据费时费电;二是流量贵如金那。我个人比较推荐的做法是使用Java或PHP等开发接口或者编写WebService进行数据库的增删该查,然后Android调用接口或者WebService进行数据的交互。本文就给大家讲解在Android中如何调用远程服务器端提供的WebService。 既然是调用WebService,我们首先的搭建WebService服务器。 下面演示的就是如何通过该网站提供的手机

Android中实现webservice通信

老早之前接触过安卓通过webservice和服务端交互,但是没有记录下来,这次又遇到了,所以记录一下。 使用方法其实很简单: 第一步 project的build.gradle里面添加仓库 maven { url 'https://oss.sonatype.org/content/repositories/ksoap2-android-releases/' } 第二步 app的build.gradle里面引入依赖 // webservice implementation 'co

重学Android,保持学习 689

python使用TensorRT报错,多线程或多进程中使用问题

python使用TensorRT报错,Cuda Runtime问题

qq_44224801的博客 747

unity游戏开发日志(一)将mmd模型导入unity,并解决材质丢失的问题

unity音乐游戏开发,导入角色模型并解决材质问题

yizhigou1的博客 1762

android 调用webservice

android端与服务器交互 一般情况下,我们可以使用SOCKET,HTTP(GET,POST)等,我们也可以使用另外一种方式,webservice, 它是一种基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合到一起。说白了就是一种中间件技术. 我们在android客户端中,有时需要一些库,比如XFire,Axis2,CXF等等来支持访问We

jindegegesun的专栏 6489

playwright-mcp 安装使用的详细教程

Playwright MCP 快速入门指南 Playwright MCP Server 是由微软开发的浏览器自动化服务,通过 MCP 协议为 AI/Agent/LLM 提供网页交互能力。它基于可访问性树而非屏幕截图,支持多种浏览器和运行模式。 安装要求: Node.js v18+ 命令行操作能力 支持 MCP 的客户端 安装方式: 通过 npx 快速启动:npx @playwright/mcp@latest 项目依赖安装:npm install @playwright/mcp 主要特性: 支持 Chrome

上善若水 7997

安卓调用WebService示例资源包:您的Android开发利器

安卓调用WebService示例资源包:您的Android开发利器 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在移动应用开发中,与服务端的交互是不可或缺的一环。安卓调用WebService示例资源包为安卓开发者提供了一个简单易用的解决方案。这个资源包内含了ksoap2-android-3.6.4版本的jar包,使得开发者可以轻松地在安卓应用中实现与WebServi...

gitblog_06722的博客 818

【AI智能体】Claude Code 核心记忆文件 CLAUDE.md实战操作详解

Claude Code 核心记忆文件 CLAUDE.md实战操作详解

congge 5457

华为OD机试 新系统真题-收集灵草(Java/Py/C++/Go/C/Js)

华为OD机试 新系统真题【收集灵草】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【收集灵草】多语言题解。

qq_45776114的博客 551

在Android中调用WebService

某些情况下我们可能需要与Mysql或者Oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动然后进行数据的增删改查。我个人不推荐这种做法,一是手机毕竟不是电脑,操作大量数据费时费电;二是流量贵如金那。我个人比较推荐的做法是使用Java或PHP等开发接口或者编写WebService进行数据库的增删该查,然后Android调用接口或者WebService进行数据的交互。本

若水 4万+

PCIe 6.0 – 关于 PCI Express Gen6 您需要知道的一切

幸运的是,PCIe 6.0 FEC 足够轻,对延迟的影响最小。在电气层上,PCIe 6.0 使用 PAM4 信号(“四级脉冲幅度调制”),每个时钟周期将 2 位组合为 4 个幅度级别(00、01、10、11),与 PCIe 5.0 和前几代相比,它使用 NRZ 调制,每个时钟周期 1 位和两个幅度级别 (0, 1)。虽然 PAM4 信号更容易出错,但由于调制技术的性质,与 PCIe 5.0 相比,通道损耗不受影响,因此 PCB 上 PCIe 6.0 信号的范围将与 PCIe 5.0 相同。

qq_43416206的博客 3432

android调用webservice,Android开发调用WebService的方法示例

本文实例讲述了Android开发调用WebService的方法。分享给大家供大家参考,具体如下:WebService是一种基于SOAP协议的远程调用标准,通过webservice可以将不同操作系统平台、不同语言、不同技术整合到一块。在Android SDK中并没有提供调用WebService的库,因此,需要使用第三方的SDK来调用WebService。PC版本的WEbservice客户端库非常丰富...

weixin_36316642的博客 1431

rknn-toolkit推理yolov5-face.rknn模型--python代码

import os import urllib import traceback import time import sys import numpy as np import cv2 from rknn.api import RKNN ONNX_MODEL = 'yolov5s.onnx' RKNN_MODEL = 'yolov5s.rknn' IMG_PATH = './bus.jpg' DATASET = './dataset.txt' QUANTIZE_ON = True BOX_THR.

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 3079

Unity插件NodeCanvas之行为树的详细教程

NodeCanvas 是一个用于 Unity 的可视化脚本工具,主要用于游戏开发中的行为树、状态机和流程图的设计。它通过节点编辑器的方式,让开发者可以更直观地创建和管理游戏逻辑,减少了传统编码的复杂性。今天我们就来详细介绍一下NodeCanvas插件。

TxNet 1959

java安卓还是webservice,安卓调用webservice的一种方式及需注意的问题

最近的项目中有需要通过安卓去调用webservice,在安卓中调用webservice的解决方案大都使用ksoap2-android工具,该工具使用方法在网上有很多,我也是用的这个工具。但是在使用过程中却发生了很多问题,我被这些问题给折磨了好几天,原因还是在于没理解ksoap2-android工具的使用方法。下面介绍ksoap2-android(2.5.8)的使用:privatestaticf...

weixin_26777941的博客 170

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

安卓调用WebService示例资源包

安卓调用WebService示例资源包 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供了一个安卓调用WebService的示例资源文件,具体包括ksoap2-android-3.6.4版本的jar包。 文件内容 ksoap2-android-3.6.4.zip:包含了ksoap2-android-3.6.4版本的jar包,用于安卓开发中调用WebService服务。...

gitblog_06716的博客 414

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Android调用webservice接口

前言: WebService是一种基于SOAP协议的远程调用标准,通过webservice可以将不同操作系统平台、不同语言、不同技术整合到一块。在Android SDK中并没有提供调用WebService的库,因此,需要使用第三方的SDK来调用WebService。Android中ksoap2是WebService常用的sdk。 一、使用方法 1、工具类封装 package com.dj...

helloworld19870427的专栏 744
上一篇: android 下载 进度条
下一篇: 关于ksoap连接webService的问题
wayne512
博客等级 码龄17年 15粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值