搞了一个月的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 删除指定文件代码

    package com.tware.pdfdrop; import java.io.File; import android.app.Activity; import android.graphics ...

  2. reviewboard搭建

    reviewboard的搭建 系统:fedora 19 内核版本:3.9.5-301.fc19.x86_64 步骤 命令 备注 安装mysql # yum -y install mysql mysql ...

  3. svn 规范apk的生成命名

    第一步:新建SVNVersion.gradle  放置于build.gradle统计目录下面 /*task svnversion { description 'Get SVN revision num ...

  4. Super Phyllis(穷举+搜索)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2723 题意:给出一些字符串u,v,代表u-&g ...

  5. dom4j修改xml文件

    @SuppressWarnings("unchecked") @Override public void insertCustomInfo(File file, String mo ...

  6. 【转】iOS Provisioning Profile(Certificate)与Code Signing详解 -- 待看

    原文网址:http://blog.sina.com.cn/s/blog_82c8198f0102vy4j.html 引言 关于开发证书配置(Certificates & Identifiers ...

  7. strncpy 用法

    strncpy   用法 原型:extern char *strncpy(char *dest, char *src, int n); 用法:#include <string.h> 功能: ...

  8. js 打印网页指定内容

    function doPrint() { setTimeout(function() { bdhtml=window.document.body.innerHTML; sprnstr="&l ...

  9. nyoj 37回文串

    述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串.现在要求你,给你一个字符串,可 ...

  10. POJ 3666 Making the Grade (DP滚动数组)

    题意:农夫约翰想修一条尽量平缓的路,路的每一段海拔是A[i],修理后是B[i],花费|A[i] – B[i]|,求最小花费.(数据有问题,代码只是单调递增的情况) #include <stdio ...