您的位置:首页 > 理论基础 > 计算机网络

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: