搞了一个月的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. 【HDOJ】2851 Lode Runner

    开始没理解题意.原来destinations是指路的序号.而不是点.DP. #include <stdio.h> #include <string.h> ]; typedef ...

  2. SQL Server数据库修改字段属性

      1:向表中添加字段 Alter table [表名] add [列名] 类型 2: 删除字段 Alter table [表名] drop column [列名] 3: 修改表中字段类型 (可以修改 ...

  3. format 对整形的应用

    对于整型数,会在整型值的前面以0补之 Format('this is %.7d'[1234]);             输出是:this is 0001234]

  4. Web---Cookie技术(显示用户上次登录的时间、显示用户最近浏览的若干个图片(按比例缩放))

    本章博客讲解: 1.Cookie基本用法演示 2.演示Cookie的访问权限 3.演示Cookie的删除 4.利用Cookie显示用户上次登录的时间 5.利用Cookie技术显示用户最近浏览的若干个图 ...

  5. Web---创建Servlet的3种方式、简单的用户注册功能

    说明: 创建Servlet的方式,在上篇博客中,已经用了方式1(实现Servlet接口),接下来本节讲的是另外2种方式. 上篇博客地址:http://blog.csdn.net/qq_26525215 ...

  6. ASP.NET MVC中混合WebForm

    新建一个名为WebForms的文件夹用于存放WebForm页面文件. // 忽略对 WebForms 路径的路由routes.IgnoreRoute("WebForms/{weform}&q ...

  7. 开发者MAC电脑里的十八般兵器

    古人常以刀.枪.剑.戟.斧.钺.铲.叉.鞭.锏.锤.戈.镋.棍.槊.棒.矛.钯十八种兵器,样样精通,来形容一个人的武学技能get状态.在开发者的世界里,熟练掌握各种辅助工具,可以达到事半功倍,快速提高 ...

  8. hdoj 1509 Windows Message Queue【优先队列】

    Windows Message Queue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Ot ...

  9. hdoj 2816 I Love You Too

    I Love You Too Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)To ...

  10. pg_dump实例详解(备份postgresql和greenplum数据库)

    一.pg_dump的用法:数据库的导入导出是最常用的功能之一,每种数据库都提供有这方面的工具,例如Oracle的exp/imp,Informix的dbexp/dbimp,MySQL的mysqldump ...