Android与服务器端数据交互(基于SOAP协议android+webservice)

转载 2016年05月30日 10:42:44

它是一种基于SAOP协议的远程调用标准,通过webservice可以将不同的操作系统平台,不同语言,不同技术整合到一起。

我们在PC机器java客户端中,需要一些库,比如XFire,Axis2,CXF等等来支持访问webservice,但是这些库并不适合我们资源有限的android手机客户端,做过java ME的人都知道KSOAP这个第三方的类库;可以帮助我们获取服务器端webservice调用,当然KSOAP已经提供了基于android版本的jar包了:ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar

调用webservice方法:

实例化SoapObject对象,指定webservice的命名空间(从相关WSDL文档中可以查看命名空间),以及调用方法名称

    //命名空间
    private static final String serviceNameSpace="http://WebXml.com.cn/";
    //调用方法(获得支持的城市)
    private static final String getSupportCity="getSupportCity";

    //实例化SoapObject对象
    SoapObject request=new SoapObject(serviceNameSpace, getSupportCity);


假设方法有参数的话,设置调用方法参数
    request.addProperty("参数名称","参数值");


设置SOAP请求信息(参数部分为SOAP协议版本号,与你要调用的webservice中版本号一致)

    //获得序列化的Envelope
    SoapSerializationEnvelope envelope=new SoapSerializationEnvelope(SoapEnvelope.VER11);
    envelope.bodyOut=request;


注册Envelope
   (new MarshalBase64()).register(envelope);


构建传输对象,并指明WSDL文档URL
    //请求URL
    private static final String serviceURL="http://www.webxml.com.cn/webservices/weatherwebservice.asmx";
    //Android传输对象
    AndroidHttpTransport transport=new AndroidHttpTransport(serviceURL);
    transport.debug=true;


调用webservice(其中参数为:命名空间+方法名称,Envelope对象)
    transport.call(serviceNameSpace+getWeatherbyCityName, envelope);

解析返回数据
   if(envelope.getResponse()!=null){
                return parse(envelope.bodyIn.toString());
            }


    /*
     * 解析XML
     * @param str
     * @return
     */
    private static List<String> parse(String str){
        String temp;
        List<String> list=new ArrayList<String>();
        if(str!=null && str.length()>0){
            int start=str.indexOf("string");
            int end=str.lastIndexOf(";");
            temp=str.substring(start, end-3);
            String []test=temp.split(";");
            
             for(int i=0;i<test.length;i++){
                 if(i==0){
                     temp=test[i].substring(7);
                 }else{
                     temp=test[i].substring(8);
                 }
                 int index=temp.indexOf(",");
                 list.add(temp.substring(0, index));
             }
        }
        return list;
    }






相关文章推荐

使用基于Http的消息代替WebService的数据交互

系统间交互的工作,随着信息化建设的发展,以及业界对SOA的认识及其带来的低TOC(总体拥有成本)等优势,越来越受到信息化水平较高的用户的重视。这里先抛开SOA这样的架构规划,单纯就系统间整合的协议进行...

Android 通过WebService进行网络编程,使用工具类轻松实现

相信大家在平常的开发中,对网络的操作用到HTTP协议比较多,通过我们使用Get或者Post的方法调用一个数据接口,然后服务器给我们返回JSON格式的数据,我们解析JSON数据然后展现给用户,相信很多人...

Android学习之——(3)项目中的WebService返回数据处理学习

接上一篇http://blog.csdn.net/fu222cs98/article/details/21554339 在项目中通过WebService调用服务端方法,服务端采用C#编写,当初公司项目...

在Android中调用WebService

某些情况下我们可能需要与Mysql或者Oracle数据库进行数据交互,有些朋友的第一反应就是直接在Android中加载驱动然后进行数据的增删改查。我个人不推荐这种做法,一是手机毕竟不是电脑,操作大量数...

Android 利用soap协议与服务端进行通信

首先要使用soap与服务器通信,需要下载KSOAP包:ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar包(或者版本更高的)。      接...
  • vaecer
  • vaecer
  • 2015-08-24 01:15
  • 1334

Android WebService(基于SOAP协议)

package com.nenglong.wsclient; import java.io.IOException; import org.ksoap2.SoapEnvelope; import ...

JAVA开发2--java开发调用webservice抽取数据

开发类调用webservice并插入数据库: 新建个PACKAGE:com.noahark.dao 包括两个类:DBUtil(连接数据库)和ImportData(调用webservice)。   开...

JAVA开发1--myeclipse生成webservice客户端

参考: http://jingyan.baidu.com/article/925f8cb8c13233c0dde0561e.html 1.新建一个java项目: 2.生成webservice...

Android使用webService(发送xml数据的方式,不使用jar包)

Android访问WebService-->不使用ksoap2.jar使用http请求

android和服务器端交互(soap)转载

采用HttpClient向服务器端action请求数据,当然调用服务器端方法获取数据并不止这一种WebService也可以为我们提供所需数据,那么什么是webService呢?,它是一种基于SAOP协...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)