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 ...
随机推荐
- Extjs整合CKEditor富文本编辑器插件
CKEditor插件官方下载地址: http://ckeditor.com/download/releases 我使用的版本是 ExtJS5.1.0 CKEditor4.4.8 参考文章: http ...
- Java中数组的概念
1.什么是二维数组?有几种表达方式?分别是什么? 答:多维数组即数组的数组,即数组的元素也是数组. 例:int[] [] a = {{1},{1,2},{1,2,3}}; 有三种方式 1).int [ ...
- Linux服务器硬盘状态查看
首先执行fdisk -l最底下 Device Start End Sectors Size Type /dev/vda1 2048 6143 4096 2M BIOS boot /dev/vda2 6 ...
- Linux tomcat 去除项目名端口号直接用ip或者域名访问网站
网站开发过程中,一般的工程访问路径是 http://10.10.10.10:8080/projectName如何设置成http://10.10.10.10/ 解决方法: 首先,进入tomcat的安装 ...
- 1 Spring Cloud Eureka服务治理(下)
注:此随笔为读书笔记.<Spring Cloud微服务实战> 上篇主要介绍了什么是微服务以及微服务治理的简单实现,如微服务注册中心的实现.微服务注册的实现.微服务的发现和消费的实现.微服务 ...
- jquery自定义banner图滚动插件---(解决最后一张图片倒回第一张图片的bug)
banner图的滚动效果动画 最近做项目中banner滚动的时候遇到了一个小bug,当banner滚动到最后一张图再跳回第一张图时, 会出现默认的倒回第一张图的过渡效果,看了几个插件都是这样,所以自定 ...
- Spring框架(一)
Spring: Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由 Rod Johnson在其著作 Expert One-On-One J2EE Deve ...
- CentOS 7安装squid代理服务器
Squid,一个高性能的代理缓存服务器,支持FTP.gopher.HTTP协议. Squid,一个缓存Internet 数据的软件,其接收用户的下载申请(作为代理服务器),并自动处理所下载的数据,并返 ...
- 基于NodeJS进行前后端分离
1.什么是前后端分离 传统的SPA模式:所有用到的展现数据都是后端通过异步接口(AJAX/JSONP)的方式提供的,前端只管展现. 从某种意义上来说,SPA确实做到了前后端分离,但这种方式存在两个问题 ...
- 18.Llinux-触摸屏驱动(详解)
本节的触摸屏驱动也是使用之前的输入子系统 1.先来回忆之前第12节分析的输入子系统 其中输入子系统层次如下图所示, 其中事件处理层的函数都是通过input_register_handler()函数注册 ...