200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > java新浪天气调用_JAVA调用新浪天气预报代码(返回xml格式)

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

时间:2021-07-03 14:25:46

相关推荐

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

今天再写一个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./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 block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.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); // 将字符串转为XML

Element 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方法测试一下效果,这里就不再写出了,相对简单,希望能帮助到你。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。