Android开发之访问WebService的工具类

2024-08-31 09:48

本文主要是介绍Android开发之访问WebService的工具类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android中使用WebService通讯,下面对访问WebService的工具类进行记录
package com.wjy.project.railway.tools;import android.os.Handler;
import android.os.Message;import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException;import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;/*** Created by WangJinyong on 2018/3/28.* 访问WebService的工具类*/public class WebServiceUtils {//服务器地址public static final String WEB_SERVER_URL = "http://114.115.205.183:9004/Compaction/";
//    public static final String WEB_SERVER_URL = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx";// 命名空间private static final String NAMESPACE = "http://WebXml.com.cn/";// 含有3个线程的线程池private static final ExecutorService executorService = Executors.newFixedThreadPool(3);/*** @param url                WebService服务器地址* @param methodName         WebService的调用方法名* @param properties         WebService的参数* @param webServiceCallBack 回调接口*/public static void callWebService(String url, final String methodName,HashMap<String, String> properties,final WebServiceCallBack webServiceCallBack) {// 创建HttpTransportSE对象,传递WebService服务器地址final HttpTransportSE httpTransportSE = new HttpTransportSE(url);// 创建SoapObject对象SoapObject soapObject = new SoapObject(NAMESPACE, methodName);// SoapObject添加参数if (properties != null) {for (Iterator<Map.Entry<String, String>> it = properties.entrySet().iterator(); it.hasNext(); ) {Map.Entry<String, String> entry = it.next();soapObject.addProperty(entry.getKey(), entry.getValue());}}// 实例化SoapSerializationEnvelope,传入WebService的SOAP协议的版本号final SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);// 设置是否调用的是.Net开发的WebServicesoapEnvelope.setOutputSoapObject(soapObject);soapEnvelope.dotNet = true;httpTransportSE.debug = true;// 用于子线程与主线程通信的Handlerfinal Handler mHandler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);// 将返回值回调到callBack的参数中webServiceCallBack.callBack((SoapObject) msg.obj);}};// 开启线程去访问WebServiceexecutorService.submit(new Runnable() {@Overridepublic void run() {SoapObject resultSoapObject = null;try {httpTransportSE.call(NAMESPACE + methodName, soapEnvelope);if (soapEnvelope.getResponse() != null) {// 获取服务器响应返回的SoapObjectresultSoapObject = (SoapObject) soapEnvelope.bodyIn;}} catch (IOException e) {e.printStackTrace();} catch (XmlPullParserException e) {e.printStackTrace();} finally {// 将获取的消息利用Handler发送到主线程mHandler.sendMessage(mHandler.obtainMessage(0,resultSoapObject));}}});}/*** @author WangJinyong*/public interface WebServiceCallBack {public void callBack(SoapObject result);}}

在Activity类中使用WebService对服务器进行访问
private void requestZT_G_user() {//添加参数HashMap<String, String> properties = new HashMap<String, String>();properties.put("sjh", "13801234567");properties.put("mac", hostmac);WebServiceUtils.callWebService("服务器地址", "接口的方法名", properties, new WebServiceUtils.WebServiceCallBack() {@Overridepublic void callBack(SoapObject result) {Log.e("tag","result="+result);//返回的数据}});}

这篇关于Android开发之访问WebService的工具类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123558

相关文章

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

jvm调优常用命令行工具详解

《jvm调优常用命令行工具详解》:本文主要介绍jvm调优常用命令行工具的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一 jinfo命令查看参数1.1 查看jvm参数二 jstack命令2.1 查看现场堆栈信息三 jstat 实时查看堆内存,gc情况3.1

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批