登录
原创

基于JAVA的免费黄金数据接口查询

发布于 2021-05-06 阅读 392
  • Java
  • API
  • 聚合数据
原创

一:查询接口使用聚合数据提供的免费接口,每天可以100次免费调用,点击https://www.juhe.cn/可以注册登录并免费使用接口。

二:因为我的目的是输出一个黄金种类的所有具体内容,所以具体实现代码一共分为三个类,每个类有一个方法

主函数

public class MainSocketRank
{
public static void main(String[] args) {
SocketUI Ui = new SocketUI(“上海黄金交易所”);
}
}

Encode的方法用来实现对远程返回的JSON处理,得到一个String

public class Encode
{
private static Map<String,String> map = new HashMap<>();

public static  Map<String, String> encode(int n) {
    
	UrlInter urlinter = new UrlInter();
    String response = urlinter.doGet();

	JSONObject jsonObject = JSON.parseObject(response);
    String reason = jsonObject.getString("reason");
	if(reason.equals("SUCCESSED!")) {
		
		JSONArray ArrayResult = jsonObject.getJSONArray("result");
		JSONObject varietyNum = null ;
	    
	    switch(n) {
        case 1:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("1");break;
        case 2:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("2");break;
        case 3:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("3");break;
        case 4:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("4");break;
        case 5:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("5");break;
        case 6:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("6");break;
        case 7:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("7");break;
        case 8:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("8");break;
        case 9:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("9");break;
        case 10:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("10");break;
        case 11:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("11");break;
        case 12:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("12");break;
        case 13:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("13");break;
        case 14:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("14");break;
        case 15:     varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("15");break;
        case 16:	 varietyNum = JSON.parseObject(ArrayResult.get(0).toString()).getJSONObject("16");break;
        default :break;
	    }
	    
	    String variety = varietyNum.getString("variety");
	    String latestpri = varietyNum.getString("latestpri");
	    String openpri = varietyNum.getString("openpri");
	    String maxpri = varietyNum.getString("maxpri");
	    String minpri = varietyNum.getString("minpri");
	    String limit = varietyNum.getString("limit");
	    String yespri = varietyNum.getString("yespri");
	    String totalvol = varietyNum.getString("totalvol");
	    String time = varietyNum.getString("time");
	   
	    /*console所使用的输出形式
	    System.out.printf("种类:%s%n", variety);
	    System.out.printf("最新价:%s%n", latestpri);
	    System.out.printf("开盘价:%s%n", openpri);
	    System.out.printf("最高价:%s%n", maxpri);
	    System.out.printf("最低价:%s%n", minpri);
	    System.out.printf("涨跌幅:%s%n", limit);
	    System.out.printf("昨收价:%s%n", yespri);
	    System.out.printf("总成交量:%s%n", totalvol);
	    System.out.printf("更新时间:%s%n", time);
        */
	    
	    //UI所使用的输出形式,如果需要用console输出,则需要将方法的返回值改成void
	    map.put("variety", variety);
	    map.put("latestpri", latestpri);
	    map.put("openpri", openpri);
	    map.put("maxpri", maxpri);
	    map.put("minpri", minpri);
	    map.put("limit", limit);
	    map.put("yespri", yespri);
	    map.put("totalvol", totalvol);
	    map.put("time", time);
	}
	else {
	    System.out.printf("未找到所给种类");
	}
	return map;
}

}

用来远程获取数据返回字符串(因为我写这个是课上作业需要,所以在编写时借鉴了大佬的代码,侵删DDwyane

public class UrlInter
{
private static String APP_KEY = “****”;//你的KEY
private static String APP_URL = “http://web.juhe.cn:8080/finance/gold/shgold”;

public static String doGet()
{
	HttpURLConnection connection = null;
    InputStream inputStream = null;
    BufferedReader bufferedReader = null;
    String result = null;
    
 // 创建远程url连接对象
    URL url;
	try
	{
		url = new URL(new StringBuffer(APP_URL).append("?key=").append(APP_KEY).toString());
		// 通过远程url连接对象打开一个连接,强转成httpURLConnection类
        connection = (HttpURLConnection) url.openConnection();
        // 设置连接方式:get
        connection.setRequestMethod("GET");
        // 设置连接主机服务器的超时时间:15000毫秒
        connection.setConnectTimeout(5000);
        // 设置读取远程返回的数据时间:60000毫秒
        connection.setReadTimeout(6000);
        // 发送请求
        connection.connect();
        // 通过connection连接,获取输入流
        if (connection.getResponseCode() == 200) {
            inputStream = connection.getInputStream();
            // 封装输入流,并指定字符集
            bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
            // 存放数据
            StringBuilder sbf = new StringBuilder();
            String temp;
            while ((temp = bufferedReader.readLine()) != null) {
                sbf.append(temp);
                sbf.append(System.getProperty("line.separator"));
            }
            result = sbf.toString();
        }
	} catch (IOException e)
	{
		e.printStackTrace();
	}finally {
        // 关闭资源
        if (null != bufferedReader) {
            try {
                bufferedReader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (null != inputStream) {
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (connection != null) {
            connection.disconnect();// 关闭远程连接
        }
    }
    return result;
}

}

评论区

励志做一条安静的咸鱼,从此走上人生巅峰。

6

0

4

举报