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的工具类相关推荐

  1. Android开发人员不得不收集的工具类集合

    一.Android开发人员不得不收集的工具类集合  ----收藏 https://github.com/RobertCow/RxTools 二.android 开发之listview工具集合框架 ht ...

  2. Android 开发人员不得不收集的工具类集合

    RxTools 项目地址:vondear/RxTools  简介:Android 开发人员不得不收集的工具类集合 | 支付宝支付 | 微信支付(统一下单) | 微信分享 | Zip4j 压缩(支持分卷 ...

  3. AndroidUtils:Android开发不得不收藏的Utils工具类

    AndroidUtils Android开发不得不收藏的Utils 具体Demo使用参考开源github:AndroidUtilCode.本文只是稍微记录下方便查阅. Activity相关→Activ ...

  4. java工具类去掉字符串String中的.点。android开发java程序员常用工具类

    下面是工具类详细代码: package com.qq986945193.david;/*** qq986945193 Project* ================================ ...

  5. Android开发封装高德实时定位工具类

    前言 1.使用高德开放平台中的Android 定位SDK最新版本:v4.6.0 2.测试机型:魅蓝note2  系统5.1.1 华为荣耀畅玩7x  系统8.0.0 一.集成高德Android定位sdk ...

  6. Android快速开发不可或缺的11个工具类(下载)

    Android快速开发不可或缺的11个工具类(下载) 源码简介 Android快速开发不可或缺的11个辅助类,其中10个来自张鸿洋的博客,1个是我平时积攒的,复制粘贴到你的项目里,添加上包名就可以直接 ...

  7. Android PermissionUtils:运行时权限工具类及申请权限的正确姿势

    Android PermissionUtils:运行时权限工具类及申请权限的正确姿势 ifadai 关注 2017.06.16 16:22* 字数 318 阅读 3637评论 1喜欢 6 Permis ...

  8. 用于Android开发的免费类库和工具集合

    用于Android开发的免费类库和工具集合,按目录分类. Action Bars ActionBarSherlock Extended ActionBar FadingActionBar GlassA ...

  9. Android中调用webservice的工具类

    最近学习WebService,感觉利用这个借口开发网站的Android客户端方便及了,用到一个工具类,这里铭记一下. public static final String WebServiceName ...

最新文章

  1. Java - 网络编程(NetWork)
  2. python绘制月亮_用python画月亮的代码是什么?
  3. NYOJ 682 初学者的烦恼
  4. 剑指 Offer 53 - I. 在排序数组中查找数字 I(二分法)
  5. Ubuntu热键控制spotify播放和音量调节
  6. 关于硬盘运行在不同模式下的疑难解答
  7. 学习笔记之23-typedef
  8. python 创建文件夹1003python 创建文件夹_在python中创建动态文件名
  9. Django 后台带有字典的列表数据与页面js交互
  10. NYOJ题目170网络的可靠性
  11. Gale-Shapley算法(基于python3.6)
  12. 麒麟linux硬盘安装,U盘安装中标麒麟Linux桌面版的方法
  13. Python视频剪辑Auto-Editor一键预处理口播无声片段
  14. Excel行高列宽使用单位为磅(1cm=28.6磅)
  15. 图数据库ONgDB Release v-1.0.0
  16. 量化投资学习——对于中性化的理解
  17. android 键盘隐藏监听,Android监听键盘显示和隐藏
  18. jsp洗衣店管理系统
  19. 浙师大和浙商大计算机专业谁好,浙江工商大学与杭州师范大学哪个好些?
  20. Vue.js中的生命周期函数

热门文章

  1. iOS 改变模拟器系统版本
  2. 如何更换程控交换机的人工铃声
  3. ubuntu18.04环境下安装QQ、微信(wechat)
  4. global 仪表控件 无人机地面站_最新无人机考试地面站考试实施细则
  5. 冲量在线入选2022年艾瑞咨询“隐私计算卓越者”榜单
  6. mysql中long_在Mysql中用 LONGBLOB 类型存储二进制数据
  7. matlab函数大全
  8. Docker 安装和卸载详细步骤
  9. Android-支付宝支付
  10. 解决sougo输入法在Ubuntu下汉字输入出现数字代码的问题