java如何使用eclipse调用中央气象局接口

 

       不管是工作中还是生活中,我们都需要用到天气预报,作为一个码农,天气的需求也是被挂在嘴边的。最近公司的客户提出要获取设备安装地的实时天气,本猿就研究了下中央气象局的天气接口(一般比较常用)。

        废话少说,先附上中央气象局的接口链接:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx

 这是接口的文档信息,里面有多个接口可供选择,本猿只使用了其中的一个,其实原理都是一样的。

       首先,打开eclipse,新建一个java project,创建之后,选中src目录,右键新建 Web Service Client

输入刚才的链接,当然需要在最后加上?wsdlhttp://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl

链接也已给出,直接finish。

就可以看到如下的package

到此,项目加载webservice就算完成了,接下来就是代码实现了,具体的步骤,注意事项都已写在code里了,本猿在这里就不多解释了,直接上代码。

package com.dlbd.test;

import java.rmi.RemoteException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.xml.rpc.ServiceException;

import cn.com.WebXml.WeatherWebServiceLocator;
import cn.com.WebXml.WeatherWebServiceSoapStub;

/**
 * 中央气象局天气预报接口
 * 该接口免费用户(同一IP)24小时只能访问70次左右
 * 不能访问频率过快(必须加延时sleep,目前只测试了间隔一秒),不然会无法正常显示
 * 
 * @author amao
 *
 */
public class TestWeather {

	public static String getWeatherByCity(String city) {
		//拼接天气
		String str = null;
		try {

			WeatherWebServiceLocator locator = new WeatherWebServiceLocator();
			// 调用xxLocator对象的getXXPort()方法生成xxSoapBindingStub对象
			WeatherWebServiceSoapStub stud = (WeatherWebServiceSoapStub) locator.getWeatherWebServiceSoap();
			// 输出当天的天气状况
			String[] weather = stud.getWeatherbyCityName(city);
			// 获取当前时间
			SimpleDateFormat sdf = new SimpleDateFormat("y年M月d日");
			Date nowDate = new Date();
			String time = sdf.format(nowDate);

			// TODO 这边可以根据自己的业务去选择性的编写
			/**
			 * 这是本人所在公司需要获取当天的气象,请求时间不同可能获取的字符串就不同 所以在此进行了三次判断,保证获取的是当天的天气
			 */
			if (weather[6].contains(time.substring(time.indexOf("年") + 1))) {

				// 截取天气状况
				String weatherStatus = weather[6].substring(weather[6].indexOf(" ") + 1);
				// 拼接天气
				str = weather[1] + ":" + weatherStatus + "\n" + weather[5] + " " + weather[7];

			} else if (weather[13].contains(time.substring(time.indexOf("年") + 1))) {

				// 截取天气状况
				String weatherStatus = weather[13].substring(weather[13].indexOf(" ") + 1);
				// 拼接天气
				str = weather[1] + ":" + weatherStatus + "\n" + weather[12] + " " + weather[14];

			} else if (weather[18].contains(time.substring(time.indexOf("年") + 1))) {

				// 截取天气状况
				String weatherStatus = weather[18].substring(weather[18].indexOf(" ") + 1);
				// 拼接天气
				str = weather[1] + ":" + weatherStatus + "\n" + weather[17] + " " + weather[19];
				
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return str;
	}

	public static void main(String[] args) throws RemoteException, ServiceException {
		String weather = getWeatherByCity("大连");
		System.out.println(weather);
	}

}

 下面附上源码路径 csdn:https://download.csdn.net/download/qq_35062384/10711313

                               github:https://github.com/amaohaoshuai/weather

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值