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


    目录(?)[-]

    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开发相关文章

  • 相关阅读:
    给a标签加样式的写法
    IE6、IE7下不支持overflowy:hidden;
    fontfamily:微软雅黑
    文字加下划线
    IE8下按钮与右边的距离比IE7和IE6的多了一倍
    在button(div)里设置背景图后,在IE6下背景图的高度被撑开了
    li中包含span,在IE6、IE7下会有3pxbug
    事件冒泡
    [LeetCode] Insert Interval 解题报告
    [LeetCode] Generate Parentheses 解题报告
  • 原文地址:https://www.cnblogs.com/blongfree/p/5048048.html
Copyright © 2020-2023  润新知