Pro Android学习笔记(七十):HTTP服务(4):SOAP/JSON/XML、异常

来源:互联网 发布:软件项目主要技术指标 编辑:程序博客网 时间:2024/05/21 20:01

文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件,转载须注明出处: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开发相关文章

0 0