java获取http网页预警信息

在参考网上获取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 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;
	}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值