12.21-Android WebService(基于KSOAP2)
KSOAP2_连接WebService
*****我是小知识点********
Ksoap2提供了对soap序列化更好的支持。Ksoap2是一个轻量级的J2ME平台的实现框架,提供了soap协议消息的
组装,网络post,网络return,解析等功能。
****美美分割线**********
1、在项目工程中导入KSOAP2.jar包
2、访问.net的URL,找到约定的URL命名空间和访问方法
String SERVICE_NS = "http://tempuri.org/";
String methodName = "mydata";
3、创建SoapObject,传入所要调用的Web Service的命名空间,Web Service方法名
SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);
4、传参数给Web Service 服务器,调用SoapObject对象的addProperty(String name,Object value)方法去设置参数。(name为android与.net约定的参数名)
soapObject.addProperty("L",con);
5、使用SOA1.1协议创建Envelop对象,设置与.net提供的WebService保持较好的兼容性
// 生成调用WebService方法调用的soap信息,并且指定Soap版本
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
envelope.bodyOut=soapObject;
envelope.dotNet = true;// 是否调用DotNet开发的WebService
6、创建HttpTransportSE传输对象,传入WebService服务器地址
String SERVICE_URL = "http://192.168.66.66:82/data.asmx";
HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);
7、通过调用HttpTransportSE对象的call方法,其中call的第一个参数是命名空间+Web service方法名,第二个参数是SoapSerializationEnvelope的对象。
ht.call(SERVICE_NS+methodName, envelope);
8、假如返回值为字符串,接收返回参数的方法是:SoapSerializationEnvelope的对象envelope,envelioe.getResponse,接收返回的值。
if(envelope.getResponse()!=null){
String s = envelope.getResponse().toString();
}
************需注意的几点***********
1、命名空间一定要跟URL格式一致
2、方法名要与.net一致
3、注意SOAP的版本是10/11/12,你可以看.net中的xml文件开头版本,或者将三者均试一遍。
4、在调用的时候不能放在主线程中,要放在异步线程调用
***********华丽的分割线*************
package test.example.Ksoap2; import java.io.IOException;
import java.util.ArrayList;
import java.util.List; import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;
import org.xmlpull.v1.XmlPullParserException; public class ConnectWebService {
/**
* 判断回来的值是否正确
*
* @param con
* @return
*/
public static boolean getData(String con) {
String SERVICE_URL = "http://192.168.66.66:82/data.asmx";
String SERVICE_NS = "http://tempuri.org/";
String methodName = "mydata"; // 创建SoapObject对象,
// 创建该对象时需要传入所要调用Wb Service的命名空间、Web Service方法名;
SoapObject soapObject = new SoapObject(SERVICE_NS, methodName);
// 如果有参数要传给Web Service服务器,
// 调用SoapObject对象的addProperty(String name,Object value)方法来设置参数,
// 该方法的name参数指定参数名;
// value参数指定参数值
soapObject.addProperty("L", con);
// 使用SOA1.1协议创建Envelop对象
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER10);
envelope.bodyOut = soapObject;
// 是否调用DotNet开发的WebService ,设置与.net提供的Web Service 保持较好的兼容性
envelope.dotNet = true;
try {
// 通过HttpTransportSE传输对象,传入WebService服务器地址
HttpTransportSE ht = new HttpTransportSE(SERVICE_URL);
// 调用HttpTransportSE对象的call()方法,其中call的第一个参数soapAction,
// 第二个为SoapSerializationEvelope对象 调用远程Web Service;
ht.call(SERVICE_NS + methodName, envelope);
if (envelope.getResponse() != null) {
// 获取服务器响应返回的SOAP消息
/*
* SoapObject result = (SoapObject) envelope.bodyIn; SoapObject
* detail = (SoapObject)
* result.getProperty(methodName+"Result");
*/
/*
* 获取返回的数据 SoapObject object = (SoapObject) envelope.bodyIn;
* 获取返回的结果 String result = object.getProperty(0).toString();
*/
// 解析服务器相应的SOAP消息-字符串
String s = envelope.getResponse().toString();
if (s.equals("ok")) {
return true;
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (XmlPullParserException e) {
System.out.println("********************异常啦");
}
return false;
}
}
******************我是天天酷涛*******************
12.21-Android WebService(基于KSOAP2)的更多相关文章
- 在Android 中使用KSOAP2调用WebService
WebService 是一种基于SOAP协议的远程调用标准.通过WebService可以将不同操作系统平台,不同语言.不同技术整合到一起.在Android SDK中并没有提供调用WebService的 ...
- Android webservice的用法详细讲解
Android webservice的用法详细讲解 看到有很多朋友对WebService还不是很了解,在此就详细的讲讲WebService,争取说得明白吧.此文章采用的项目是我毕业设计的webserv ...
- Android零基础入门第35节:Android中基于回调的事件处理
原文:Android零基础入门第35节:Android中基于回调的事件处理 通过前面两期掌握了Android中基于监听的事件处理的五种形式,那么本期一起来学习Android中基于回调的事件处理. 一. ...
- Android零基础入门第34节:Android中基于监听的事件处理
原文:Android零基础入门第34节:Android中基于监听的事件处理 上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本 ...
- 程序员最喜爱的12个Android应用开发框架二(转)
在上一篇程序员最喜爱的12个Android应用开发框架(一)中,我们为大家介绍了前6个Android应用开发框架,主要包括了 Xamarin.Phonegap.Corona SDK等.接下来,小编将继 ...
- 【我的书】Unity Shader的书 — 文件夹(2015.12.21更新)
写在前面 感谢全部点进来看的朋友.没错.我眼下打算写一本关于Unity Shader的书. 出书的目的有以下几个: 总结我接触Unity Shader以来的历程,给其它人一个借鉴.我非常明确学Shad ...
- 2015.12.21~2015.12.24真题回顾!-- HTML5学堂
2015.12.21~2015.12.24真题回顾!-- HTML5学堂 山不在高,有仙则名!水不在深,有龙则灵!千里冰封,非一日之寒!IT之路,须厚积薄发!一日一小练,功成不是梦!小小技巧,尽在HT ...
- Android之基于HTTP协议的下载
Android之基于HTTP协议的下载 http://www.blogjava.net/zh-weir/archive/2010/05/02/319892.html http://www.qianfa ...
- WebService基于SoapHeader实现安全认证(一)
本文转载:http://www.cnblogs.com/houleixx/archive/2009/08/22/webservice-soapheader-security.html WebServi ...
随机推荐
- PHP封装数据库连接
将数据库连接放在类里面,用的时候直接实例化类. 将数据库地址,用户名,密码做成成员变量 将数据库连接做成成员方法,通过传入的sql语句返回结果集对象 class DBDA{ public $host= ...
- ACM退役记&&回忆录
ACM退役记 2017.9.19星期二,"九一八事变"八十六年后的第二天,永远记住这个日子,刚好是我报名ACM到现在,刚好满一年,而今天正是我注册杭州电子科技大学OJ的时间(就是这 ...
- SpringMVC第二篇【过滤编码器、注解开发、requestMapping、业务方法与传统参数】
SpringMVC过滤编码器 在SpringMVC的控制器中,如果没有对编码进行任何的操作,那么获取到的中文数据是乱码! 即使我们在handle()方法中,使用request对象设置编码也不行!原因也 ...
- python实例编写(5)--异常处理,截图,用例设计
一.python的异常处理 异常抛出处理机制: 1.若在运行时发生异常,解释器会查找相应的处理语句(handler) 2.若在当前函数无法找到,就将异常传给上层的调用函数,看是否能处理 3.如果在最外 ...
- openGPS.cn - 高精度IP定位原理,定位误差说明
[ip定位历史] 关于IP定位,最早是通过运营商实现,每个运营商申请到的ip段,在某个范围内使用. 因此早期只能是国家为单位的基础数据. 对于比较大的国家,就进一步划分,比如,中国某通讯公司(不打广告 ...
- 关于C++中char 型变量的地址输出
在刚开始学习C/C++过程中,我们希望输出各个变量的地址来窥探一些我们"百思不得其解"的现象,例如搞清函数堆栈相关的程序内部秘密. 先看下面示例: #include<stdi ...
- iOS9.3越狱
转载:http://bbs.feng.com/read-htm-tid-10680439.html 首先是Windows英文版越狱的的教程 下载 Cydia Impactor 工具(用来安装越狱A ...
- React Router 按需加载+服务器渲染的闪屏问题
伴随着React协议的『妥协』(v16采用MIT),React为项目的主体,这个在短期内是不会改变的了,在平时使用过程中发现了如下这个问题: 在服务器渲染的时候,刷新页面会出现闪屏的现象(白屏一闪而过 ...
- 51 nod 1495 中国好区间 奇葩卡时间题 700ms 卡O(n*log(n)), 思路:O(n)尺取法
题目: 这个题目竟然叫中国好区间,要不要脸.欸,不得不说还蛮顺口的,哈哈哈. 首先我们有一个数组a.可以递推得来,O(n)时间复杂度. 定义left(有效区间的左端点),bigger(有效区间中大于等 ...
- hdu3695 ac自动机入门
Computer Virus on Planet Pandora Time Limit: 6000/2000 MS (Java/Others) Memory Limit: 256000/1280 ...