目录(?)[-]

  1. SOAP
  2. JSON和XMLPullParser
  3. Exception处理

文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件,转载须注明出处:http://blog.csdn.net/flowingflying/

SOAP

SOAP,即Simple Object Access Protocol,是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息。Android并不提供SOAP API接口。开发者可以通过kSOAP2开发套件在Android上建立SOAP client,具体参见http://code.google.com/p/ksoap2-android/

作为project,除了在终端上实现SOAP client外,还可以在网络部署支持SOAP的服务器,Android应用和服务器相连,服务器再通过SOAP连到目标服务器。如果目标服务器有改动(尤其不是自己开发的,不受控),我们不需要更新Android上的应用,只需更新中间的SOAP服务器。又例如,我们需要对用户订购进行管理,用户订购可以在中间服务器进行,这是一种很有用的结构,将业务逻辑和用户管理分离。

JSON和XMLPullParser

Android提供JSON(JavaScript Object Notation)解析API,提供XML解析API。JSON的API封装在org.json包,XML解析可以使用XMLPullParser,具体参见Android学习笔记(三八):资源resource(上)、XML解析(XmlPullParser) 。

Exception处理

HTTP service是外部服务,对于异常处理要重视,包括传输异常、协议异常和超时。传输异常是通常是网络连接差。协议异常出现在协议层,服务器通常会返回一个4xx的错误,例如要求携带login信息,但是没有。超时有连接超时和socket超时,前者是无法连接到服务器,后者是连接上了,但是服务器在指定时间内没有响应。对于传输异常,HttpClient已经很好地进行处理。对于协议异常,那是我们处理业务逻辑代码的事。我们需要处理的是超时。

下面的例子是异常进行自动重连(包括传输异常和超时),最多可重连3次。

public HttpResponse executeHttpGetWithRetry() throws Exception { 
    int retry = 3;   //最大重连次数 
    int count = 0; //实际计数 
     
    while (count < retry) { 
        count += 1; 
        try {  
            HttpResonse response = executeHttpGet();  //在上一学习例子中的multiPartTest基础上,修改为更简单的executeHttpGet方法 
            // 如果到此,说明运行成功,返回响应
            return response; 
        } catch (Exception e) { 
            //如果到此,说明异常出现,根据重连次数进行重试 
            if (count < retry) {  
                 System.out.println(e.getMessage()); 
            } else { 
                System.out.println("all retries failed"); 
                throw e; 
            } 
        } 
    } 
    return null; 
}

本博文涉及的例子代码,可以在Pro Android学习:Http service小例子中下载。

相关链接: 我的Android开发相关文章

【转】 Pro Android学习笔记(七十):HTTP服务(4):SOAP/JSON/XML、异常的更多相关文章

  1. 【转】 Pro Android学习笔记(十九):用户界面和控制(7):ListView

    目录(?)[-] 点击List的item触发 添加其他控件以及获取item数据 ListView控件以垂直布局方式显示子view.系统的android.app.ListActivity已经实现了一个只 ...

  2. 【转】Pro Android学习笔记(十二):了解Intent(下)

    解析Intent,寻找匹配Activity 如果给出component名字(包名.类名)是explicit intent,否则是implicit intent.对于explicit intent,关键 ...

  3. 【转】Pro Android学习笔记(十):了解Intent(上)

    目录(?)[-] Intent基本含义 系统的Intent Android引入了Intent的概念来唤起components,component包括:1.Activity(UI元件) 2.Servic ...

  4. 【转】Pro Android学习笔记(十四):用户界面和控制(2):Text类控制

    目录(?)[-] TextView 例子1在XML中设置autoLink属性 例子2在代码中设置autoLink属性 EditText AutoCompleteTextView MultiAutoCo ...

  5. 【转】Pro Android学习笔记(十六):用户界面和控制(4):ImageView控件

    目录(?)[-] XML片段 代码设置ImageView ImageView是基础的控件,它是android.widget.ImageView的继承类. XML片段      <LinearLa ...

  6. 【转】Pro Android学习笔记(十五):用户界面和控制(3):Button控件

    目录(?)[-] 基础Button ImageButton ToggleButton CheckBox RadioButton 基础Button Button是最常用的基础控件之一,在Android中 ...

  7. 【转】Pro Android学习笔记(十八):用户界面和控制(6):Adapter和AdapterView

    目录(?)[-] SimpleCursorAdapter 系统预置的layout ArrayAdapter 动态数据增插删排序 自定义TextView风格 其他Adapter AdapterView不 ...

  8. 【转】Pro Android学习笔记(三十):Menu(1):了解Menu

    目录(?)[-] 创建Menu MenuItem的属性itemId MenuItem的属性groupId MenuItem的属性orderId MenuItem的属性可选属性 Menu触发 onOpt ...

  9. 【转】 Pro Android学习笔记(三五):Menu(6):XML方式 & PopUp菜单

    目录(?)[-] 利用XML创建菜单 XML的有关属性 onClick事件 Pop-up菜单 利用XML创建菜单 在代码中对每个菜单项进行设置,繁琐且修改不灵活,不能适配多国语言的要求,可以利用资源进 ...

  10. 【转】Pro Android学习笔记(二五):用户界面和控制(13):LinearLayout和TableLayout

    目录(?)[-] 布局Layout 线性布局LinearLayout 表格布局TableLayout 布局Layout Layout是容器,用于对所包含的view进行布局.layout是view的子类 ...

随机推荐

  1. Random Fourier Features

    K-DSN 深度堆叠网络 Random Features for Large-Scale Kernel Machines To accelerate the training of kernel ma ...

  2. FOXMAIL提示容量满无法收邮件,清除旧邮件后还是无法收取,请问如何解决?

    FOXMAIL提示容量满无法收邮件,清除旧邮件后还是无法收取,请问如何解决? 2009-03-23 11:21包子燕  分类:网站使用 我清除了FOXMAIL所在的磁盘空间,共有12G,也删除了部分旧 ...

  3. 小程序获取openid和unionid java实现

    官方api:https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html#wxloginobject 参考文章:https:/ ...

  4. 图片加载ImageLoader

    https://github.com/nostra13/Android-Universal-Image-Loader public class AtguiguApplication extends A ...

  5. UVA - 10870 Recurrences 【矩阵快速幂】

    题目链接 https://odzkskevi.qnssl.com/d474b5dd1cebae1d617e6c48f5aca598?v=1524578553 题意 给出一个表达式 算法 f(n) 思路 ...

  6. Android Media应用开发

    Java层API : AudioRecord 采集音频(PCM格式)AudioTrack 播放音频 Camera 用来采集摄像头的数据Surface / SurfaceView / GLSurface ...

  7. Data Structure Array: Find the Missing Number

    http://www.geeksforgeeks.org/find-the-missing-number/ 1. use sum formula, O(n), O(1) 2. use XOR, O(n ...

  8. form memory cache、form disk cache与304

    200 from memory cache 不访问服务器,直接读缓存,从内存中读取缓存.此时的数据时缓存到内存中的,当kill进程后,数据将不存在200 from disk cache 不访问服务器, ...

  9. android HDMI (一):HDMI基础篇【转】

    本文转载自:http://blog.csdn.net/xubin341719/article/details/7713450 说到android的HDMI,从android 2.2.android2. ...

  10. Recovery模式【转】

    本文转载自:http://tieba.baidu.com/p/2299027486 Recovery模式是手机系统的一个工程模式,作用是恢复和清除.用户进入这个模式之后,可以对当前系统的一些数据进行清 ...