JAVA调用新浪天气预报代码(返回xml格式)

来源:互联网 发布:js获取焦点的函数 编辑:程序博客网 时间:2024/05/21 16:59

今天再写一个JAVA调用新浪天气预报的代码,这个返回的是xml格式的,所以这里要用到xml解析,这里采用的是dom4解析,所以这里要导入dom4j的jar包,另外需要建立远程连接还需要导入httpclient这个jar包,具体不多说了,直接上代码。

 

注:由于新浪用的是gbk的编码 所以我们要转码。

1.第一方法是获取新浪天气的代码:

public static String getWeather(String cityname){String city=URLEncoder.encode(cityname);String url="http://php.weather.sina.com.cn/xml.php?city="+city+"&password=DJOYnieT8234jlsK&day=0";String returnStr = "";HttpClient client = new HttpClient();PostMethod getMethod = new PostMethod(url);try {client.executeMethod(getMethod);returnStr = new String(getMethod.getResponseBodyAsString().getBytes("iso-8859-1"), "UTF-8");// 链接返回来的信息} catch (HttpException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return returnStr;


2.这个是根据获取回来的信息进行dom解析的代码:

public static String weather(String cityname){String ss=getWeather(cityname);StringBuffer buff = new StringBuffer();Document doc = null;try {doc = DocumentHelper.parseText(ss); // 将字符串转为XMLElement rootElt = doc.getRootElement(); // 获取根节点System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称Iterator iter = rootElt.elementIterator("Weather"); // 获取根节点下的子节点Weather// 遍历head节点while (iter.hasNext()) {Element recordEle = (Element) iter.next();String city = recordEle.elementTextTrim("city"); // 拿到Weather节点下的子节点title值buff.append("您好,我是小V,以下是今天的天气情况!").append("\n\n");String date=recordEle.elementTextTrim("savedate_weather");buff.append("当前日期:").append(date).append("\n");buff.append("城市:" + city).append("\n");String status1 = recordEle.elementTextTrim("status1");String status2 = recordEle.elementTextTrim("status2");buff.append("天气情况:" + status1 + "转" + status2).append("\n");String temperature1 = recordEle.elementTextTrim("temperature1");String temperature2 = recordEle.elementTextTrim("temperature2");buff.append("温度:" + temperature1 + "~~" + temperature2 + "摄氏度").append("\n");String chy_shuoming = recordEle.elementTextTrim("chy_shuoming");buff.append("建议穿衣:" + chy_shuoming).append("\n");String gm_s = recordEle.elementTextTrim("gm_s");buff.append("需要注意:" + gm_s).append("\n");buff.append("很高兴为您服务").append("\n");buff.append("回复 ? 显示需要的帮助。").append("\n\n");;}} catch (DocumentException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}return buff.toString();


3.另外你可以自行写个main方法测试一下效果,这里就不再写出了,相对简单,希望能帮助到你。

原创粉丝点击