`
肖福燕
  • 浏览: 11821 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Android开发Web Service通信

阅读更多
   与HTTP通信方式相比,HTTP不能实现远程方法的调用,Web Service可以实现。Web Service也有服务器端和客户端,一般采用XFire来搭建服务器。客户端Android系统中并没有提供直接与Web Service互相调用的操作类库,一般是采用第三方提供的类库才可以完成,比较常用的是Ksoap2类库。
   一个完整的Web Service通信应该有服务器的建设和客户端的建设两个部分,服务器端的建设比较繁琐,可以借助内置Tomcat的MyEclipse8.5来实现。
   其实网络上有很多已经建立好的服务器端,在服务器端提供开发好的方法供外界使用,例如:在http://www.webxml.com.cn服务器上对外公开了很多方法,比如天气情况、航班信息、手机归属地等,客户端只需要调用这些方法和相关参数,就可以编程调用这些方法,而不需要自己再去建立服务器。
   下面编写了一个实例:
   新建主布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/et"
        android:hint="请输入城市"
        android:selectAllOnFocus="true"/>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/search_but"
        android:text="获取天气信息"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/text"
        android:textSize="24sp"/>

</LinearLayout>
   下面是主程序类:
package xiao.fuyan.testapp;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.HttpTransportSE;

/**
 * Created by xiao on 2017/2/3.
 */
public class WebServiceActivity extends Activity {
    private Button search_but;
    private TextView textView;
    private EditText et;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webservice_xml);

        et = (EditText) findViewById(R.id.et);
        search_but = (Button) findViewById(R.id.search_but);
        search_but.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String city = et.getText().toString();
                getWeather(city, " ");
            }
        });
    }

    //定义命名空间
    private static final String NAMESPACE = "http://WebXml.com.cn/";
    //定义请求WSDL文档的URL
    private static final String URL = "http://www.webxml.com.cn/WebServices/WeatherWS.asmx";
    //定义调用方法
    private static final String METHOD_NAME = "getWeather";
    //定义命名空间+调用方法名
    private static final String SOAP_ACTION = "http://WebXml.com.cn/getWeather";

    private SoapObject detail;

    public void getWeather(String city, String id){
        try {
            textView = (TextView) findViewById(R.id.text);
            //实例化SoapObject对象
            SoapObject rpc = new SoapObject(NAMESPACE, METHOD_NAME);
            //添加参数
            rpc.addProperty("thecityname", city);
            rpc.addProperty("id", id);

            //实例化SoapSerializationEnvelope对象
            SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
            //封装输入的SoapObject对象rpc
            envelope.bodyOut = rpc;
            //要访问的服务器是.net服务器,否则设置为false
            envelope.dotNet = true;
            //设置要输出的SoapObject对象
            envelope.setOutputSoapObject(rpc);
            //指定WSDL地址
            HttpTransportSE ht = new HttpTransportSE(URL);
            //使用调试
            ht.debug = true;

            //调用web service
            ht.call(SOAP_ACTION, envelope);
            //获取返回信息
            detail = (SoapObject) envelope.getResponse();
            textView.setText(detail.toString());
            return;
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
分享到:
评论

相关推荐

    android 资料整理 web service

    10. **测试与调试**:使用Postman等工具进行API接口测试,以及利用Android Studio的Logcat进行日志输出,对于调试和优化Web Service通信过程非常有用。 总之,Android与Web Service的整合涉及到多个层面,包括选择...

    Android开发中WebService网络编程研究.pdf

    在实现Web Service通信的过程中,主要涉及以下协议规范: 1. SOAP(Simple Object Access Protocol):这是一个简单的、基于XML的协议,用于在分布式环境中交换结构化和类型化的信息。SOAP消息通常通过HTTP或HTTPS...

    从android中调用web service的源码.zip

    在Android开发中,调用Web Service是常见的需求,主要用于实现移动设备与服务器之间的数据交互。Web Service通常基于SOAP(Simple Object Access Protocol)或REST(Representational State Transfer)协议,为不同...

    基于Android和Web Service的掌上校园系统的设计与实现.pdf

    "基于Android和Web Service的掌上校园系统的设计与实现" 本文主要介绍了基于Android和Web Service的掌上校园系统的设计与实现。随着移动互联网的高速发展和智能手机的普及,广大师生迫切希望能够通过手机平台来随时...

    Android客户端访问Web Service的实现.pdf

    这些通常涉及网络通信和协议栈,对于Android客户端访问Web Service来说,这些技术点虽然不是直接相关,但它们可能与网络通信层的实现细节相关联。 8. 结束语与参考文献: 文档的结束语部分提出了一种基于MTCA架构的...

    Android访问 web service asmx

    这是一个用于Android的轻量级SOAP库,它使我们能够与各种SOAP Web服务通信。这个jar文件包含了所有必要的依赖,因此我们可以直接将其添加到Android项目的libs目录,并在项目构建路径中包含它。 接下来,我们来看看`...

    安卓开发-从android中调用web service的源码.zip

    在Android开发中,调用Web Service是常见的数据交互方式,特别是在需要与远程服务器进行数据交换时。本资源“安卓开发-从android中调用web service的源码.zip”提供了具体的实现示例,帮助开发者理解这一过程。以下...

    安卓Android源码——从android中调用web service的源码.zip

    在安卓(Android)平台上开发应用时,调用Web Service是一项常见的任务,这通常涉及到与远程服务器进行数据交互,实现功能如登录验证、数据同步等。本压缩包中的源码提供了从Android应用程序中调用Web Service的示例...

    Android学习平台中Web Service架构的实现与研究.pdf

    在Android学习平台的开发中,Web Service架构起着至关重要的作用,它使得移动设备能够与服务器进行高效的数据交换,从而实现远程教育平台的功能。Web Service是一种基于XML的通信技术,允许不同系统间的数据交互,不...

    【Android】开机自启动Service

    在Android系统中,Service是一种可以在后台长时间运行的组件,它不提供用户界面,但可以执行各种任务,如播放音乐、网络通信等。当设备启动时,我们有时希望某些Service能够自动启动,以便立即开始执行预定的任务,...

    android开发--使用ksoap2调用webservice[借鉴].pdf

    在Android开发中,调用Web服务是常见的需求,尤其是当需要与服务器进行数据交互时。Web服务,特别是基于SOAP协议的WebService,允许不同平台和语言之间进行通信。然而,Android SDK本身并未提供直接调用WebService的...

    基于Web Service的3G手机应用开发入门讲座

    - 开发者可以利用各种移动开发框架和库,如Android的Ksoap2或iOS的SOAPClient,轻松集成Web Service,创建功能强大的3G手机应用。 总的来说,Web Service是互联网时代实现系统间协同工作的重要技术,它简化了不同...

    Android开发之WebService介绍

    总的来说,Android开发中的WebService调用是一个涉及网络通信、数据序列化和反序列化的过程。了解和掌握WebService的基本原理,包括SOAP和WSDL,对于开发能够与远程服务器无缝交互的应用至关重要。通过使用...

    Android 调用webservices实例参考

    此外,由于Web Service通信涉及网络操作,建议在子线程中执行,以避免阻塞UI线程。可以使用`AsyncTask`或者`Handler`等机制实现异步调用。同时,对于错误处理和日志记录也需要做好相应的代码编写,以便调试和优化。

    Android 通过 Ksoap2 访问 Web Service Demo

    在Android开发中,有时我们需要与服务器进行数据交互,这时候Web Service接口就显得尤为重要。Ksoap2是一个轻量级的库,允许Android应用与基于SOAP(简单对象访问协议)的Web服务进行通信。在这个"Android通过Ksoap2...

    从android中调用web service的源码

    在Android开发中,调用Web Service是常见的数据交互方式,特别是对于需要远程获取或发送数据的应用来说至关重要。Web Service通常采用SOAP(Simple Object Access Protocol)或REST(Representational State ...

    android与C# WebService基于ksoap通信

    接下来,我们来看一下如何使用kSOAP与C# Web Service通信的步骤: 1. **创建SOAP请求**: 首先,你需要构造一个SOAPEnvelope对象,设置其版本、命名空间和SOAPAction。同时,创建一个SOAPBody并添加所需的参数。 ``...

    安卓Android源码——从中调用web service的源码.zip

    在安卓(Android)平台上开发应用时,调用Web Service是一项常见的任务,这通常涉及到与远程服务器进行数据交互,实现功能如登录验证、数据同步等。本压缩包中的源码提供了如何在Android应用中调用Web Service的具体...

    Android应用源码之从中调用web service的源码.zip

    在Android应用开发中,调用Web Service是一种常见的需求,它使得移动应用能够与远程服务器进行数据交互,实现功能如登录验证、数据同步等。本压缩包"Android应用源码之从中调用web service的源码.zip"提供了一个具体...

Global site tag (gtag.js) - Google Analytics