WebService之如何调用

本文介绍了一种查询天气数据的方法,通过本地API查询城市天气,若数据为空,则使用官方API进行补充查询,并通过代码实现这一流程。

前面两篇文章讲过了如何新建和转发,下面这篇文章就来讲讲如何代码级别的调用

本案例中的两个接口一个为自己开发的接口 一个为转发的接口 如图所示

创建一个用于发布的包以及Class类

       在用于发布的类中编写所要发布的方法

       自己开发的接口直接new 方法即可

       转发的接口需要new Proxy中的方法

 

实战代码:

说明:查询城市天气

              先模拟天气API在本地创建一个常州市天气数据,假使调用本地开发的天气API查询南京的天气数据,背景说明了在本地开发的天气API只有常州的数据故这里要查询南京数据即为空,当查询本地天气API数据为空时需调用官方给的天气API接口查询南京的数据

import java.rmi.RemoteException;
import java.sql.SQLException;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.zh.uzi.Way;

import cn.com.WebXml.WeatherWebServiceSoapProxy;

public class Tianqi_Web {
	WeatherWebServiceSoapProxy web=new WeatherWebServiceSoapProxy();
	/***
	 * 查询数据
	 * @param name
	 * @return
	 * @throws ClassNotFoundException
	 * @throws SQLException
	 * @throws RemoteException
	 * @throws JSONException
	 */
	public String getAllData(String name) throws ClassNotFoundException, SQLException, RemoteException{
		Way way=new Way();
		String str=null;
		
		//调用本地数据库
		str=way.getAllData(name);
		System.out.println("===================");
		//判断 本地是否可以查到数据
		if (str.equals("[]")){
			//本地查不到数据调用外面的API
			try {
				str=getApi(name);
				System.out.println("===if=="+str);
			} catch (JSONException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			}
		System.out.println("最外层输出"+str);
		System.out.println("~~~~~~~~");	
		return str;
	}
	/***
	 * 调用天气API 查询数据
	 * @param name
	 * @return
	 * @throws RemoteException
	 * @throws JSONException
	 */
	public String getApi(String name) throws RemoteException, JSONException{
		System.out.println("调用天气接口");
		String key=null;
		String value=null;
		// 导入json方法
		JSONArray array = new JSONArray();
		//导入jsonObj 数组 类似 [key,value]
		JSONObject jsonObj = new JSONObject();
		//接收结果
		String[] soap=web.getWeatherbyCityName(name);
		for(int i=0;i<soap.length;i++){
			//System.out.println(soap[i]+" ");
			/**
			 * 转换成json
			 */
			key="省";
			value=soap[0];
			jsonObj.put(key, value);
			key="市";
			value=soap[1];
			jsonObj.put(key, value);
			key="时间";
			value=soap[4];
			jsonObj.put(key, value);
			key="最低最高温度";
			value=soap[5];
			jsonObj.put(key, value);
			key="日期";
			value=soap[6];
			jsonObj.put(key, value);
			key="风速";
			value=soap[7];
			jsonObj.put(key, value);
			jsonObj.put(key, value);
			key="总结";
			value=soap[10];
			jsonObj.put(key, value);
		}
		//调用put将 jsonObj 数组转换成json
        array.put(jsonObj);
        
        //System.out.println("输出自定义josn:"+array.toString());
		return array.toString();
		
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值