目录(?)[-]

  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. Centos 6 安装 python2.7 和 pip

    一.安装 python2.7 [root@crazy-acong ~]# cd /data/tools/ [root@crazy-acong tools]# yum groupinstall &quo ...

  2. 洛谷 P2486 [SDOI2011]染色

    题目描述 输入输出格式 输入格式: 输出格式: 对于每个询问操作,输出一行答案. 输入输出样例 输入样例#1: 6 5 2 2 1 2 1 1 1 2 1 3 2 4 2 5 2 6 Q 3 5 C ...

  3. LDA中的先验知识

    LDA涉及到的先验知识有:二项分布.Gamma函数.Beta分布.多项分布.Dirichlet分布.马尔科夫链.MCMC.Gibbs Sampling.EM算法等. 二项分布 二项分布是N重伯努利分布 ...

  4. 在VS2010下打开VS2008项目的解决办法

    如何在vs2010中打开vs2008项目文件? 第一步:以记事本方式打开该项目的sln解决方案,找到这两行信息,分别如下:Microsoft Visual Studio Solution File,  ...

  5. easy_install和pip的安装及使用

    在终端输入命令报错后,在网上找到了这篇博客,用easy_install命令安装pip,问题解决 Fatal error in launcher: Unable to create process us ...

  6. 自定义xhr请求

    接上一篇博客,上一篇是之前的jsonp请求方法的封装,这一篇是xhr请求的简单封装. 原理: 1:new一个xhr对象,命名为ajaxRequest,由于浏览器兼容性的问题,所以将获取xhr对象的方式 ...

  7. spring AOP简单实现代码存放

    @Before:使用Before增强处理只能在目标方法执行之前织入增强,如果Before增强处理没有特殊处理,目标方法总会自动执行,如果Before处需要阻止目标方法的执行,可通过抛出一个异常来实现. ...

  8. Python3 内置函数补充匿名函数

    Python3 匿名函数 定义一个函数与变量的定义非常相似,对于有名函数,必须通过变量名访问 def func(x,y,z=1): return x+y+z print(func(1,2,3)) 匿名 ...

  9. /etc/apt/sources.list

    今天学习: 在Ubuntu下软件源的文件是/etc/apt/sources.list,那么sourdces.list.d目录下的文件又是什么作用呢? 该文件夹下的文件是第三方软件的源,可以分别存放不同 ...

  10. 暑假集训第一周比赛C题

    http://acm.hust.edu.cn/vjudge/contest/view.action?cid=83146#problem/C C - 学 Crawling in process... C ...