• 酷乐天气开发记录总结3


    与服务器的交互

    新建HttpUtil类,代码如下:

    public class HttpUtil {
            
             publicstatic void sendHttpRequest(final String address,
                                finalHttpCallbackListener listener) {
                       newThread(new Runnable() {
                                @Override
                                publicvoid run() {
                                         HttpURLConnectionconnection = null;
                                         try{
                                                   URLurl = new URL(address);
                                                   connection= (HttpURLConnection) url.openConnection();
                                                   connection.setRequestMethod("GET");//设置HTTP请求的方法
                                                   connection.setConnectTimeout(8000);//设置连接超时
                                                   connection.setReadTimeout(8000);//设置读取超时
                                                   InputStreamin = connection.getInputStream();//获取服务器返回的输入流
                                                   BufferedReaderreader = new BufferedReader(new InputStreamReader(in));//对输入流进行读取
                                                   StringBuilderresponse = new StringBuilder();
                                                   Stringline;
                                                   while((line = reader.readLine()) != null) {
                                                            response.append(line);//添加每一行的字符串
                                                   }
                                                   if(listener != null) {
                                                            //回调onFinish()方法
                                                            listener.onFinish(response.toString());
                                                   }
                                         }catch (Exception e) {
                                                   if(listener != null) {
                                                            //回调onError()方法
                                                            listener.onError(e);
                                                   }
                                         }finally {
                                                   if(connection != null) {
                                                            connection.disconnect();
                                                   }
                                         }
                                }
                       }).start();//启动线程
             }
     
    }

    使用到了HttpCallbackListener接口来回调服务返回的结果,因此还需要添加这个接口:

    public interface HttpCallbackListener {
     
             voidonFinish(String response);
     
             voidonError(Exception e);
     
    }

    回调机制:http://hellosure.iteye.com/blog/1130176

    实现的是Runnable接口: http://mars914.iteye.com/blog/1508429

    HttpURLConnection方法:

    http://www.cnblogs.com/guodongli/archive/2011/04/05/2005930.html

    http://developer.android.com/reference/java/net/HttpURLConnection.html

    http://wangzhaoli.blog.51cto.com/7607113/1288000

    stringbuilder 主要是解决对字符串做频繁修改操作时的性能问题,有一个容量的概念,先分配好一定的内存,在字符串长度达到上限之前,全部在此内存内操作,不涉及内存的重新分配和回收。

    而 string 每次修改都会重新创建一个对象。

    打个比方:你开发一个程序,但每次增加、修改和删除代码都要找领导申请汇报,你说效率高不?

    后来领导说,改你自己模块内的代码不用找我了,你的地盘你作主,于是...:lol

    append()方法是动态的增加字符串。

    新建Utility类,用来解析和处理数据的,“代号|城市,代换|城市”这种。

    解析和返回省级数据

    public synchronized static booleanhandleProvincesResponse(
                                CoolWeatherDBcoolWeatherDB, String response) {
                       if(!TextUtils.isEmpty(response)) {
                                String[]allProvinces = response.split(",");
                                if(allProvinces != null && allProvinces.length > 0) {
                                         for(String p : allProvinces) {
                                                   String[]array = p.split("\|");
                                                   Provinceprovince = new Province();
                                                   province.setProvinceCode(array[0]);
                                                   province.setProvinceName(array[1]);
                                                   //将解析出来的数据存储到Province表
                                                   coolWeatherDB.saveProvince(province);
                                         }
                                         returntrue;
                                }
                       }
                       returnfalse;
             }

    解析的原则就是先按逗号分隔,再按单竖线分隔,接着将解析出来的数据设置到实体类中,最后调用save()方法将数据存储到相应的表中。


  • 相关阅读:
    pdf.js-----后端返回utf-8数据流,前端处理数据展示pdf
    正则表达式之去除前后空格
    ng之邮箱校验
    ng-校验重复并提示具体重复内容
    input 数值框处理
    逻辑之不重复
    ng -----监听变化($scope.$watch())
    js中document的用法
    php中12个魔术方法
    php 中const和 define的区别
  • 原文地址:https://www.cnblogs.com/lemonhome/p/4492646.html
Copyright © 2020-2023  润新知