搞了一个月的android,现学现卖,终于还是搞完了,停下来,整理思路,写写记录吧。

我们知道android访问远程数据库主要有两种协议,一种是SOAP,另外一种就是HTTP。而我们再看看WebServices的请求方式。建立一个WebServices,直接在浏览器中查看,你会发现WebServices也同时提供了2中请求方式,也都是SOAP和HTTP-POST的方式。

是巧合还是必然,那都不重要了。重要的是android如何访问WebServices呢?

看下第一种SOAP访问的方式。

我们知道WebServices数据交互一般都是使用XML的格式,但是庞大的数据列表使用XML会消耗很大的流量,所有我们在安卓中的操作就使用了神器JSON格式来交互。。。

安卓SOAP访问WebServices

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
public Boolean SoapRequestWeb()
   {
        String nameSpace =ConfigCommon.getNetConfigProperties().getProperty("nameSpace");//WebServices命名空间
        String serviceURL = ConfigCommon.getNetConfigProperties().getProperty("serviceURL");;//请求地址
        String methodName = "Login";//方法名
        String soapAction = "http://tempuri.org/Login";//处理动作
        SoapObject request = new SoapObject(nameSpace, methodName);//声明SOAP对象
        //请求参数
        request.addProperty("DeviceID",iemi);    
                request.addProperty("phone",phone);
                SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);//生成调用Webservice方法的SOAP请求信息
                envelope.bodyOut = request;
                envelope.dotNet=true;//指定是否为.NET版本
                //创建HttpTransportSE对象。通过HttpTransportSE类的构造方法可以指定WebService的WSDL文档的URL
                HttpTransportSE ht = new HttpTransportSE(serviceURL);
                ht.debug = true;
                String result="";
            try {
                        ht.call(soapAction, envelope);//使用call方法调用WebService方法,请求WebServices
                        if (envelope.getResponse() != null) {
                             result= envelope.getResponse().toString();//获取输出结果
                        if(result.isEmpty() || result.equals("null"))
                             {
                            // Toast.makeText(this,"不存在该用户,请重试!",Toast.LENGTH_LONG).show();
                            //Message("不存在该帐号,请确保手机号正确");
                             return false;
                         }
                    //使用Json对象对获取的数据进行解析。
                    JSONObject  jsonObj= new JSONObject(result);
                    String name=jsonObj.getString("UserName");
                   //保存当前登陆用户
                    T_Users tu=new T_Users();
                    tu.setUserName(name);
                    if(!name.isEmpty())
                        {
                        //保存好信息
                        // setContentView(R.layout.index);               
                       return true;
                        }
                else
                    {
                        Toast.makeText(this,result.toString(),Toast.LENGTH_LONG).show();
                    return false;
                    }
                } else {
                   return false;
                }
            } catch (Exception e) {
                e.printStackTrace();
                Toast.makeText(this, e.getMessage(),Toast.LENGTH_LONG).show();
                return false;
            }
   }
 

 

安卓HTTP-POST访问WebServices

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public void HttpRequestWeb()
    {
         String serviceURL = ConfigCommon.getNetConfigProperties().getProperty("serviceURL");;//请求地址
         String uriAPI = serviceURL+"/ApplyOut";
             //建立HTTP Post连线/
            HttpPost httpRequest =new HttpPost(uriAPI);
            List params=new ArrayList();  //参数列表
            params.add(new BasicNameValuePair("rid",ApplyOutRowid));  //添加参数
        try
        {
                //设置Http请求实体
             httpRequest.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8));
                 /*取得HTTP 输出对象*/
                 HttpResponse httpResponse = new DefaultHttpClient().execute(httpRequest);
                 if(httpResponse.getStatusLine().getStatusCode() == 200)  
                     { 
                       /*取出响应字符串*/
                       String strResult = EntityUtils.toString(httpResponse.getEntity());
                       int index=strResult.lastIndexOf("\">");
                       strResult=  strResult.substring(index+2, index+6);
                       Common.Message(strResult, this);
                       //如果正确入住,则跳转到主界面
                       if(strResult.equals("true"))
                       {
                       Common.Message("已离开", this);
                       this.finish();
                       }
                   else
                       {
                       Common.Message("暂时无法离开,请重试!", this);
                       }         
                 } 
                 else 
                     { 
                      String error="Error Response: "+httpResponse.getStatusLine().toString();
                      Common.Message(error, this);
                     } 
            }
        catch(Exception e)
        {
             Common.Message(e.getMessage(), this);
        }
    }
 

这就是ANDROID访问WebServcies的两种方式,这也是JAVA访问的两种方式。

其实比对两种方式你会发现几乎都差不多,只是一些对象的使用不同罢了。。

本文从百度空间搬家到博客园。。

android应用一(调用WebServices)的更多相关文章

  1. Android使用ksoap2调用C#中的webservice实现图像上传

    目录: 一. android使用ksoap2调用webservice 二. 异步调用 三. Android使用ksoap2调用C#中的webservice实现图像上传参考方法 四. 图像传输中Base ...

  2. 在Android开发中调用Rest web服务(转)

    首先从维基百科上拷贝一点Rest的基本概念给大家看看,然后我们再开始详解在Android中如何调用Rest服务.表象化状态转变(英文:Representational State Transfer,简 ...

  3. ajax调用WebServices服务方法和传参调用WebServices注意事项

    先演示下ajax是如何调用WebServices中的方法    1.新建一个页面default.aspx,一个Web服务    在页面中引用jQuery文件. <script src=" ...

  4. Android 使用AIDL调用外部服务

    好处:多个应用程序之间建立共同的服务机制,通过AIDL在不同应用程序之间达到数据的共享和数据相互操作, 本文包括: 1 .创建AIDL 服务端.2 .创建AIDL 客户端. 3.客户端调用服务端提供的 ...

  5. Android使用KSOAP2调用WebService及正确导入jar包的问题(转)

    Android使用KSOAP2调用WebService及正确导入jar包的问题(转)     错误信息 最近在学Android使用KSOAP2调用现有的Webservice的方法,期间在网上找了很多代 ...

  6. [置顶] android利用jni调用第三方库——第三篇——编写库android程序整合第三方库libhello.so到自己的库libhelloword.so

    0:前言: 在第二篇中,我们主要介绍了丙方android公司利用乙方C++公司给的动态库,直接调用库中的方法,但是这样方式受限于: 乙方C++公司开发的动态库是否符合jni的规范,如果不规范,则不能直 ...

  7. [置顶] android利用jni调用第三方库——第二篇——编写库android程序直接调用第三方库libhello.so

    0:前言 1:本文主要作为丙方android公司的身份来写 2:作者有不对的地方,请指出,谢谢 [第一篇:android利用jni调用第三方库——编写库libhello.so] [第二篇:androi ...

  8. php利用SoapClient调用webservices

    原文:php利用SoapClient调用webservices 1.开启soap支持,在php.ini中去除extension=php_soap.dll之前的':' 2.掉用页面 <?php h ...

  9. AllJoyn+Android开发案例-android跨设备调用方法

    AllJoyn+Android开发案例-android跨设备调用方法 项目须要涉及AllJoyn开源物联网框架.前面主要了解了一些AllJoyn主要的概念.像总线,总线附件,总线对象,总线接口这种概念 ...

  10. 在Android Studio中调用so中的方法

    本节用的so是上节用Android Studio创建的so.想在Android Studio中调用so中的方法,需要先引用so.Android Studio中引用so的方法有二种,下面开始介绍. 一 ...

随机推荐

  1. ANDROID_MARS学习笔记_S02_014_GSON解析JSON串为对象

    package com.json2; import android.app.Activity; import android.os.Bundle; import android.view.View; ...

  2. C#面向对象——成员变量及封装

    namespace 面向对象5_22 { class Animal { private string _Type; public string Type { get { return _Type; } ...

  3. Apache Commons IO 2.3 几点用法

    //直接将IO流转成字符串 InputStream in = new URL( "http://jakarta.apache.org" ).openStream(); try { ...

  4. JavaScript几种类工厂实现原理剖析

    PS:本文参考了司徒正美的<JavaScript框架设计>,以及许多其它的书籍和网络文章,感谢作者们分享了这么好的学习资源!关于JS的类和继承的原理,见:JavaScript里的类和继承文 ...

  5. Centos5.5内核升级

    当前版本linux-2.6.18-194.el5PAE目标版本linux-2.6.35.9内核升级步骤: 1.查看当前内核版本 uname –a¥ Linux localhost.localdomai ...

  6. HDOJ/HDU 1804 Deli Deli(英语单词复数形式~)

    Problem Description Mrs. Deli is running the delicatessen store "Deli Deli". Last year Mrs ...

  7. BWT(Burrows-Wheeler Transformation)的讲解及java实现

    BWT(Burrows-Wheeler Transformation) 1.什么是BWT 压缩技术主要的工作方式就是找到重复的模式,进行紧密的编码. BWT(Burrows–Wheeler_trans ...

  8. fetion for linux

  9. 【转】如何实现一个malloc

    任何一个用过或学过C的人对malloc都不会陌生.大家都知道malloc可以分配一段连续的内存空间,并且在不再使用时可以通过free释放掉.但是,许多程序员对malloc背后的事情并不熟悉,许多人甚至 ...

  10. ThinkPHP 快速入门

    1. 框架简介 框架是程序结构代码的集合,而不是业务逻辑代码.集合中包含了很多类.函数和功能类包.这个集合是按照一定标准组成的功能体系.体系有很多设计模式,比如MVC等. 2. ThinkPHP框架学 ...