Android 连接.net WebService 工具类代码
安卓代码: import android.os.Handler;
import android.os.Message; import org.ksoap2.SoapEnvelope;
import org.ksoap2.SoapFault;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE; public class WebServiceUtils {
public interface CallBack {
void result(String result);
}
//参数说明,serviceUrl是.net的webservice地址,一般取得是http://IP地址:端口号/XXX.asmx
// methodName 是WebService上的接口名
// okparams 是 传递的参数以String的形式传递,传递Json可以先转为字符串,服务端再解析出来
//CallBack回调,获取返回的值
public static void getResult(final String serviceUrl,final String methodName,final String okparams, final CallBack callBack) {
// 用于子线程与主线程通信的Handler
final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// 将返回值回调到callBack的参数中
callBack.result((String) msg.obj);
}
};
new Thread(new Runnable() {
@Override
public void run() { try{
//.net上的命名空间+webwervice上的方法名
String soapAction = "http://tempuri.org/" + methodName;
//参数,命名空间,方法名
SoapObject request = new SoapObject("http://tempuri.org/", methodName);
//传递的参数,注意key要与.net方法的参数名一致
request.addProperty("okparams",okparams );
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = request;
HttpTransportSE ht = new HttpTransportSE(serviceUrl);
ht.call(soapAction, envelope);
Object object;
if (envelope.getResponse() != null){
object = (Object)envelope.getResponse();
// SoapObject soapObject = (SoapObject) envelope.getResponse();
// 将结果利用Handler发送到主线程
mHandler.sendMessage(mHandler.obtainMessage(1, object.toString())); }
if (envelope.bodyIn instanceof SoapFault) {
SoapFault error = (SoapFault) envelope.bodyIn;
// 将异常的消息利用Handler发送到主线程
mHandler.sendMessage(mHandler.obtainMessage(0, error.toString()));
} }catch (Exception ex)
{
mHandler.sendMessage(mHandler.obtainMessage(-1, ex.getMessage()));
} }
}).start();
}
} //使用实例
WebServiceUtils.getResult(serviceUrl, methodName, 传递的参数, new WebServiceUtils.CallBack() {
@Override
public void result(String result) {
//返回值
String res = result; }
}); //.Net部分代码
/// <summary>
/// test 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
// [System.Web.Script.Services.ScriptService]
public class test : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld(string okparams)
{
return "Hello World";
}
}
Android 连接.net WebService 工具类代码的更多相关文章
- Android开源项目大全 - 工具类
主要包括那些不错的开发库,包括依赖注入框架.图片缓存.网络相关.数据库ORM建模.Android公共库.Android 高版本向低版本兼容.多媒体相关及其他. 一.依赖注入DI 通过依赖注入减少Vie ...
- Android开发调试日志工具类[支持保存到SD卡]
直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.i ...
- wemall app商城源码android开发MD5加密工具类
wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享android开发MD5加密工具类主要代码,供 ...
- Jedis工具类代码
安装Redis可以参考 https://www.cnblogs.com/dddyyy/p/9763098.html Redis的学习可以参考https://www.cnblogs.com/dddyyy ...
- Android 中替代 sharedpreferences 工具类的实现
Android 中替代 sharedpreferences 工具类的实现 背景 想必大家一定用过 sharedpreferences 吧!就我个人而言,特别讨厌每次 put 完数据还要 commit. ...
- 关于TornadoFx和Android的全局配置工具类封装实现及思路解析
原文地址: 关于TornadoFx和Android的全局配置工具类封装实现及思路解析 - Stars-One的杂货小窝 目前个人开发软件存在设置页面,可以让用户自定义些设置,但我发现,存储数据的代码逻 ...
- android -------- 压缩图片文件工具类
项目中常常遇到文件压缩问题,上传文件大小限制 今天简单的分享一点干货,文件压缩,图片压缩,压缩Bitmap 主要通过尺寸压缩和质量压缩,以达到清晰度最优 效果图 源码地址: https://githu ...
- Android弹出Toast工具类总结
Android弹出Toast工具类总结,包括系统自带的,也包括自定义的. public class ToastUtil { public ToastUtil() { } public static T ...
- 获取 Android APP 版本信息工具类(转载)
获取 Android APP 版本信息工具类 获取手机APP版本信息工具类 1.获取版本名称 2.获取版本号 3.获取App的名称 package com.mingyue.nanshuibeidiao ...
随机推荐
- 华为OpenStack开源团队人才招募中
职位要求: 1. 三年以上软件开发经验,编程技能良好. 2. 熟练使用Python.Java.Go或其他语言开发. 3. 有OpenStack经验或者存储经验优先考虑. 4. 良好的学习和沟通能力,责 ...
- 单层反查BOM
*&---------------------------------------------------------------------* *& Report YCX_001 * ...
- java中byte数组,二进制binary安装chunk大小读取数据
int CHUNKED_SIZE = 8000; public void recognizeText(byte[] data) throws InterruptedException, IOExcep ...
- 无法连接App Store
试了很多网上的方法,都没有效果,最后把hosts文件清空了,就可以了,不知道是为啥,同一份hosts文件在屋里能用,公司就不能用.
- iOS-tabBar切换不同控制器封装(自定义导航+自定义uiviewcontroler+系统自带tabbar+自定义tabbarController)
首先,一个app的搭建环境非常重要.既要实现基本功能,又要考虑后期优化的性能. 现在很多应用不仅仅是系统自带的控制器,由于需求复杂,基本上需要自定义多控制器来管理. 新建一个BasicNavigati ...
- AWS 存储服务(三)
目录 AWS S3 业务场景 挑战 解决方案 S3的好处 S3 属性 存储桶 Buckets 对象 Object S3 特性 S3 操作 可用性和持久性 一致性 S3 定价策略 S3高级功能 存储级别 ...
- Fakes里的stub和shim的区别
stub常用于虚拟接口.类.方法,无法重写静态方法(stub需要传递到具体调用代码中) shim常用于重写静态方法(在ShimsContext.Create()作用域内,拦截Runtime动态修改方法 ...
- 遵循统一的机器学习框架理解高斯混合模型(GMM)
遵循统一的机器学习框架理解高斯混合模型(GMM) 一.前言 我的博客仅记录我的观点和思考过程.欢迎大家指出我思考的盲点,更希望大家能有自己的理解. 本文参考了网络上诸多资料,特别是B站UPshuhua ...
- 【VS开发】TCP服务端如何判断客户端断开连接
原文出自:http://www.cnblogs.com/youxin/p/4056041.html 一篇文章: 最近在做一个服务器端程序,C/S结构.功能方面比较简单就是client端与serve ...
- 基于MSP430G2231实现的频率计
基于MSP430G2231实现的频率计 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 系列博客说明:此系列博客属于作者在大三大四阶段所储备的关于电子电路设计 ...