java获取http网页预警信息
2017-02-27 16:31
85 查看
在参考网上获取http网页信息后,完成了获取预警信息的功能,将xml信息转换成json字符串进行解析,插入到对应的表中,进行推送等功能
代码如下
代码如下
StringBuffer sb = new StringBuffer(); String acceptEncoding = ""; /* 1.生成 HttpClinet 对象并设置参数 */ HttpClient httpClient = new HttpClient(); // 设置 Http 连接超时 5s httpClient.getHttpConnectionManager().getParams() .setConnectionTimeout(5000); GetMethod method = new GetMethod( "http://wthrcdn.etouch.cn/WeatherApi?citykey=xxxxxxxxxxxxxxx"); // 设置 get 请求超时 5s method.getParams().getDoubleParameter(HttpMethodParams.SO_TIMEOUT, 10000); // 设置请求重试处理 method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); int statusCode; try { statusCode = httpClient.executeMethod(method); // 判断访问的状态码 if (statusCode != HttpStatus.SC_OK) { System.out.println(sb.toString()); ; } else { if (method.getResponseHeader("Content-Encoding") != null) acceptEncoding = method.getResponseHeader( "Content-Encoding").getValue(); if (acceptEncoding.toLowerCase().indexOf("gzip") > -1) { // 建立gzip解压工作流 InputStream is; is = method.getResponseBodyAsStream(); GZIPInputStream gzin = new GZIPInputStream(is); InputStreamReader isr = new InputStreamReader(gzin, "utf-8"); // 设置读取流的编码格式,自定义编码 java.io.BufferedReader br = new java.io.BufferedReader(isr); String tempbf; while ((tempbf = br.readLine()) != null) { sb.append(tempbf); sb.append("\r\n"); } isr.close(); gzin.close(); } else { InputStreamReader isr; isr = new InputStreamReader( method.getResponseBodyAsStream(), "utf-8"); java.io.BufferedReader br = new java.io.BufferedReader(isr); String tempbf; while ((tempbf = br.readLine()) != null) { sb.append(tempbf); sb.append("\r\n"); } isr.close(); } } } catch (HttpException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } method.abort(); method.releaseConnection(); JSONObject obj = new JSONObject(); try { InputStream iss = new ByteArrayInputStream(sb.toString().getBytes( "utf-8")); SAXBuilder sbs = new SAXBuilder(); Document doc = sbs.build(iss); Element root = doc.getRootElement(); obj.put(root.getName(), iterateElement(root)); } catch (Exception e) { e.printStackTrace(); } JSONObject jsonObj = JSONObject.fromObject(obj); try{ Object list = jsonObj.getJSONObject("resp").getJSONArray("alarm") .get(0); JSONObject sos = JSONObject.fromObject(list); }catch(Exception e){ }
private static Map iterateElement(Element element) { List<?> jiedian = element.getChildren(); Element et = null; HashMap<String, List> obj = new HashMap<String, List>(); List<Object> list = null; for (int i = 0; i < jiedian.size(); i++) { list = new 4000 LinkedList<Object>(); et = (Element) jiedian.get(i); if (et.getTextTrim().equals("")) { if (et.getChildren().size() == 0) continue; if (obj.containsKey(et.getName())) { list = (List<Object>) obj.get(et.getName()); } list.add(iterateElement(et)); obj.put(et.getName(), list); } else { if (obj.containsKey(et.getName())) { list = (List<Object>) obj.get(et.getName()); } list.add(et.getTextTrim()); obj.put(et.getName(), list); } } return obj; }
相关文章推荐
- Java HttpClient 实现自动登录与获取网页信息
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
- 用JAVA中的URL获取网页相关信息
- java微信网页授权获取用户信息以及JSSDK自定义分享等功能<四>
- Java微信网页授权授权获取用户基本信息
- 【java爬虫】HttpClient4.5获取网页内容
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
- java微信网页授权获取用户信息以及JSSDK自定义分享等功能<三>
- 通过httpclinet登录网站(https),并且获取网页上的信息。post+get
- java微信网页授权获取用户信息以及JSSDK自定义分享等功能<五>
- 关于在网页上获取信息.idhttp
- 用java获取网页所需信息
- 接口测试(二)httpClient 获取网页内容以及头信息
- C# HttpWebRequest 绝技 根据URL地址获取网页信息
- J2ME连接HTTP,获取网页信息的联网类
- java获取网页信息或提交请求函数
- httpclient 用java调用 的方式获取网页内容,
- c++利用libcurl获取http网页的 response headers 等信息
- Java基础:利用HttpClient获取网页内容
- java HttpClient 获取页面Cookie信息