前面两篇文章讲过了如何新建和转发,下面这篇文章就来讲讲如何代码级别的调用
本案例中的两个接口一个为自己开发的接口 一个为转发的接口 如图所示

创建一个用于发布的包以及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();
}
}
本文介绍了一种查询天气数据的方法,通过本地API查询城市天气,若数据为空,则使用官方API进行补充查询,并通过代码实现这一流程。
4732

被折叠的 条评论
为什么被折叠?



