搞了一个月的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学习笔记_S05_002_给传感器注册listener

    1 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); se ...

  2. USB究竟是什么?看完这篇文章我就明白了!

    在早期,USB接口的出现似乎仅仅是要解决一些简单外设诸如鼠标.键盘之类的设备与电脑的连接问题,很显然,这些外设所产生的数据量是极低的,所以,USB规范所定义的数据速率是1.5Mbps,数据还是双向分时 ...

  3. Spring-boot 配置Aop获取controller里的request中的参数以及其返回值

    首先在你的Maven的pom文件里加入aop的依赖: <dependency> <groupId>org.springframework.boot</groupId> ...

  4. SQL中Case When的使用方法

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END       --Case搜索 ...

  5. 栈的实现(JAVA)

    栈定义 栈(stack):是一种特殊的串行形式的数据结构,其特殊之处在于只允许在链接串行或者阵列的 一端进行插入.删除操作.其实现方式可以通过一维阵列和链接串行来实现. Tips:简单的来说栈其实也是 ...

  6. 【HDOJ】1978 How many ways

    DFS. #include <stdio.h> #include <string.h> #define MAXNUM 105 int map[MAXNUM][MAXNUM], ...

  7. org.hibernate.LazyInitializationException: failed to lazily initialize

    今天搞了一上午,都在解决这个问题:org.hibernate.LazyInitializationException: failed to lazily initialize 原因很简单,是在非法的s ...

  8. Centos6.4 mysql安装与配置

    安装命令: yum install mysql #安装客户端 yum install mysql-server #安装服务器 yum install mysql-devel #安装开发库 安装完成后, ...

  9. [资源共享]C#+AE构建GIS桌面端应用系统框架-全代码

    转自:http://www.cnblogs.com/gispeng/archive/2008/10/06/1304534.html    [资源共享]C#+AE构建GIS桌面端应用系统框架-全代码 ( ...

  10. (转载)按行合并两个sql的查询结果

    (转载)http://blog.csdn.net/wxwstrue/article/details/6784774 Union all join 是平行合并 为水平连接 Union all 是垂直合并 ...