Android天气预报程序(三)
来源:互联网 发布:淘宝手机店铺模板下载 编辑:程序博客网 时间:2024/05/29 19:29
遍历全国省市数据
全国所有省市县的数据都是从服务器端获取到的,因此和服务器的交互是必不可少的
在util包下先增加一个HttpUtil类,代码如下所示:
public class HttpUtil {public static void sendHttpRequest(final String address, final HttpCallbackListener listener) {// 开启线程来发起网络请求new Thread(new Runnable() {@Overridepublic void run() {HttpURLConnection connection = null;try {URL url = new URL(address);connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET"); // GET表示希望从服务器那里获取数据connection.setConnectTimeout(8000); // 设置连接超时的毫秒数connection.setReadTimeout(8000); // 设置读取超时的毫秒数InputStream in = connection.getInputStream(); // 获取服务器返回的输入流// 下面对获取到的输入流进行读取BufferedReader reader = new BufferedReader(new InputStreamReader(in));StringBuilder response = new StringBuilder();String line;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(); // 将这个HTTP连接关闭掉}}}}).start();}}
public interface HttpCallbackListener {void onFinish(String response);void onError(Exception e);}
在util包下新建一个Utility类,代码如下所示:
public class Utility {/** * 解析和处理服务器返回的省级数据 */public synchronized static boolean handleProvincesResponse(CoolWeatherDB coolWeatherDB, String response) {if (!TextUtils.isEmpty(response)) {String[] allProvinces = response.split(",");if (allProvinces != null && allProvinces.length > 0) {for (String p : allProvinces) {String[] array = p.split("\\|");Province province = new Province();province.setProvinceCode(array[0]);province.setProvinceName(array[1]);// 将解析出来的数据存储到Province表coolWeatherDB.saveProvince(province);}return true;}}return false;}/** * 解析和处理服务器返回的市级数据 */public static boolean handleCitiesResponse(CoolWeatherDB coolWeatherDB, String response, int provinceId) {if (!TextUtils.isEmpty(response)) {String[] allCities = response.split(",");if (allCities != null && allCities.length > 0) {for (String c : allCities) {String[] array = c.split("\\|");City city = new City();city.setCityCode(array[0]);city.setCityName(array[1]);city.setProvinceId(provinceId);// 将解析出来的数据存储到City表coolWeatherDB.saveCity(city);}return true;}}return false;}/** * 解析和处理服务器返回的县级数据 */public static boolean handleCountiesResponse(CoolWeatherDB coolWeatherDB, String response, int cityId) {if (!TextUtils.isEmpty(response)) {String[] allCounties = response.split(",");if (allCounties != null && allCounties.length > 0) {for (String c : allCounties) {String[] array = c.split("\\|");County county = new County();county.setCountyCode(array[0]);county.setCountyName(array[1]);county.setCityId(cityId);// 将解析出来的数据存储到County表coolWeatherDB.saveCounty(county);}return true;}}return false;}}
需要准备的工具类就这么多
0 0
- Android天气预报程序(三)
- Android天气预报程序(一)
- Android天气预报程序(二)
- Android天气预报程序(四)
- Android天气预报程序(五)
- Android天气预报程序(六)
- Android天气预报程序(七)
- Android天气预报程序(八)
- <Android 应用 之路> 天气预报(三)
- Android 天气预报程序
- 天气预报之三(Android版)
- Android i天气-天气预报程序
- android天气预报应用开发(三)---- 趋势图界面绘制
- Arduino语音天气预报(三)
- Android 天气预报(2)
- android天气预报(二)
- 微信小程序(一)天气预报
- 微信小程序之(天气预报)
- 延迟执行某个方法
- error: linker command failed with exit code 1 (use -v to see invocation)
- FTP服务器需要开几个端口
- 程序员如何以一敌二
- 自定义NSOperation
- Android天气预报程序(三)
- 使用苹果airport路由器的WDS功能扩展wifi覆盖范围的设置方法
- bzoj 4499: 线性函数
- Correct Solution?
- NSRunloop创建常驻的线程
- JavaScript中的事件代理
- 创建CFRunLoopObserverRef
- Objective-C之NSNotification Center(通知中心)
- cocos2dx抗锯齿与渲染冲突——待解决