java 新浪天气预报接口_java 实现天气预报 用的是新浪的接口

java 实现天气预报 用的是新浪的接口

2018-09-17

package com.lwz.wx.util;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import net.sf.json.JSONObject;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.HttpException;

import org.apache.commons.httpclient.methods.PostMethod;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

public class Gettqbycs {

public String palceRequestUrl(String city) throws UnsupportedEncodingException {

//String url="http://xml.weather.yahoo.com/forecastrss?u=c&p=CHXX"+city;

String url="http://php.weather.sina.com.cn/xml.php?city="+city+"&password=DJOYnieT8234jlsK&day=0"; //这里的0 表示今天 要查明天换成 1

return url;

}

public String Gettqbycs(String csname) throws UnsupportedEncodingException{

String url = palceRequestUrl(csname);

System.out.println(url);

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();

}

//JSONObject jsonObj = JSONObject.fromObject(returnStr );

String s=returnStr;

// System.out.println(s);

return s;

};

public String readStringXml(String xml) {

StringBuffer buff=new StringBuffer();

Document doc = null;

try {

// 读取并解析XML文档

// SAXReader就是一个管道,用一个流的方式,把xml文件读出来

//

// SAXReader reader = new SAXReader(); //User.hbm.xml表示你要解析的xml文档

// Document document = reader.read(new File("User.hbm.xml"));

// 下面的是通过解析xml字符串的

doc = DocumentHelper.parseText(xml); // 将字符串转为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");

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();

}

public static void main(String[] args) {

Gettqbycs test=new Gettqbycs();

try {

String instr="福州天气"; //这个是个人其他项目测试,可以自己处理下

System.out.println(instr.substring(2, 4));

String city=instr.substring(0, 2);

String ss= test.Gettqbycs(URLEncoder.encode(city, "GBK"));

String buffstr=test.readStringXml(ss);

System.out.println(buffstr);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

http://www.pinlue.com/style/images/nopic.gif

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值