java获取货币汇率_JAVA抓取中国外汇交易中心各币别对RMB汇率
因为中国外汇交易中心使用的数据格式为json,JAVA提供了专门解析json的lib,我们首先要引入该lib(解析json的依赖包有几个,csdn有提供所有lib的压缩包,我用的是json-lib-2.4-jdk15.rar,大家可以在csdn里搜索一下,解压出来即可)。以下是先获得中国外汇交易中心的json字符内容,然后解析json得到的汇率写入oracle 数据库Table:azk_file,所以还需要jdbc驱动包(这个驱动包CSDN也很容易找到)。
如果你是ERP开发者,且刚好是为TOP GP开发 ,那么你可以直接copy,然后打包成jar,在程序里调用这个jar即可。你懂的。
先看MAIN部分(传入参数args[0]为要取得汇率的日期):
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.ParseException;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class GetAooi070Data {
public static void main(String[] args) throws ParseException {
String date = args[0];
String url = "http://www.chinamoney.com.cn/r/cms/www/chinamoney/data/fx/ccpr.json?t=" + date; // url链接
String json = loadJson(url); // 获得json字符串
JSONObject object = JSONObject.fromObject(json); // 获得jason对象
JSONArray array = object.getJSONArray("records");// 丢掉头,只取records部分数据
new inputTiptop("数据库账号", "密码", "数据库IP地址", "数据库Schema", date).insertData(array);
}
public static String loadJson(String url) {
StringBuilder json = new StringBuilder();
try {
URL urlObject = new URL(url);
URLConnection uc = urlObject.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream(), "utf-8"));
String inputLine = null;
while ((inputLine = in.readLine()) != null) {
json.append(inputLine);
}
in.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return json.toString();
}
}
再看CLASS部分(这里取了几个币别,其中日元对RMB汇率要注意换算,官方的是100日元对1人民币的汇率,结果要除以100的):
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import net.sf.json.JSONArray;
public class inputTiptop {
// 定义数据库变量
private String url;
private String ipaddress;
private String passname;
private String password;
private String date;
private String database;
private String driver;
private Connection con;
public inputTiptop(String p_name, String p_word, String p_ip, String p_db, String p_date) // 构造指定帐号密码数据库链接
{
passname = p_name;
password = p_word;
ipaddress = p_ip;
database = p_db;
driver = "oracle.jdbc.driver.OracleDriver";
date = p_date;
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
System.out.println(e);
e.printStackTrace();
}
url = "jdbc:oracle:thin:@" + ipaddress + ":1521" + ":" + database;
}
public void insertData(JSONArray array) {
String sql = "Insert into azk_file (azk01,azk02,azk03,azk04,azk041,azk05,azk051,azk052, "
+ " azkuser,azkgrup,azkmodu,azkdate,azkoriu,azkorig,azktime) "
+ " Values (?, to_date(?, 'yyyy-mm-dd'), '', '', ? , '', '', '', '', '', '', '', '', '', '') ";
try {
con = DriverManager.getConnection(url, passname, password);
con.setAutoCommit(false);
PreparedStatement ps = con.prepareStatement(sql);// SQL预处理
int flag = 0;
for (int i = 0; i < (array.size()); i++) {
if (array.getJSONObject(i).getString("vrtEName").equals("USD/CNY")) {
ps.setString(1, "USD");
ps.setString(2, date);
ps.setFloat(3, Float.parseFloat(array.getJSONObject(i).getString("price")));
ps.addBatch();
flag = 1 + flag;
} else if (array.getJSONObject(i).getString("vrtEName").equals("EUR/CNY")) {
ps.setString(1, "EUR");
ps.setString(2, date);
ps.setFloat(3, Float.parseFloat(array.getJSONObject(i).getString("price")));
ps.addBatch();
flag = 1 + flag;
} else if (array.getJSONObject(i).getString("vrtEName").equals("100JPY/CNY")) {
ps.setString(1, "JPY");
ps.setString(2, date);
ps.setFloat(3, Float.parseFloat(array.getJSONObject(i).getString("price")) / 100);
ps.addBatch();
flag = 1 + flag;
}else {
continue;
};
}
if (flag == 3){
int rst[] = ps.executeBatch();// 执行批处理,判断正确错误
if (rst.length > 0) {
con.commit();
System.out.println(date.toString() + " insert " + passname + " success!");
} else {
con.rollback();
System.out.println(date.toString() + " insert " + passname + " fail!");
}
}
ps.close();
con.close();
} catch (SQLException e) {
System.out.println(e);
e.printStackTrace();
}
}
}
———————
作者:居士爱吃泡面
原文:https://blog.csdn.net/ERP_TOP_DD/article/details/81502298
java获取货币汇率_JAVA抓取中国外汇交易中心各币别对RMB汇率相关推荐
- JAVA抓取中国外汇交易中心各币别对RMB汇率
因为中国外汇交易中心使用的数据格式为json,JAVA提供了专门解析json的lib,我们首先要引入该lib(解析json的依赖包有几个,csdn有提供所有lib的压缩包,我用的是json-lib-2 ...
- java保存火车票信息_java抓取12306火车余票信息
最近在弄一个微信的公众帐号,涉及到火车票查询,之前用的网上找到的一个接口,但只能查到火车时刻表,12306又没有提供专门的查票的接口.今天突然想起自己直接去12306上查询,抓取查询返回的数据包,这样 ...
- Java获取游戏头像_java爬取堆糖所有头像(高质量版头像)
百度贴吧的用户头像爬下来之后,图片经过裁剪,尺寸太小,都是110*110之类的,并且有很多用户被注销后,头像是缩略图重复,所以爬了堆糖里面的头像,堆糖里的头像质量还是蛮高的. 堆糖官网:www.dui ...
- java取网页数据_Java抓取网页数据(原来的页面+Javascript返回数据)
转载请注明出处. 有时候因为种种原因.我们须要採集某个站点的数据.但因为不同站点对数据的显示方式略有不同! 本文就用Java给大家演示怎样抓取站点的数据:(1)抓取原网页数据.(2)抓取网页Javas ...
- 基于Java的阿里妈妈数据抓取技术
基于Java的阿里妈妈数据抓取技术 前言: 对于需要登录的网站爬虫最大的困难就是需要登录,然后才能获取到数据,如微博,阿里妈妈,webqq等.之前也有看过使用浏览器登录到网站后直接从浏览器中获取coo ...
- 基于Java的网络爬虫实现抓取网络小说(一)
基于Java的网络爬虫实现抓取网络小说(一) 今天开始写点东西,一方面加深印象一方面再学习. 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用 ...
- php正则获取li,用正则表达式抓取网页中的ul 和 li标签中最终的值!
获取你要抓取的页面 const string URL = "http://www.hn3ddf.gov.cn/price/GetList.html?pageno=1"; ...
- 《货币的教训》精髓:人民币汇率是一个市场行为,它是在中国外汇交易中心这个市场中形成的,不过由于央行购买了大部分中国外汇交易市场中的外汇,导致人民币汇率形成体制变成中国的“第二货币动脉”
<货币的教训>书中的精髓:人民币汇率是一个市场行为,它是在中国外汇交易中心这个市场中形成的,不过由于央行购买了大部分中国外汇交易市场中的外汇,导致人民币汇率形成体制变成中国的"第 ...
- TurboMail邮件系统与中国外汇交易中心合作
2019独角兽企业重金招聘Python工程师标准>>> 中国外汇交易中心暨全国银行间同业拆借中心(简称交易中心)于1994年4月18日成立,是中国人民银行总行直属事业单位.主要职能是 ...
最新文章
- 程序模拟抽奖流程图_一道与联欢会相关的概率统计题目的模拟仿真
- HDU 1816, POJ 2723 Get Luffy Out(2-sat)
- CTFshow 命令执行 web36
- android手机存储大小设置在哪里看,Android 最新获取手机内置存储大小,SD卡存储空间大小方法...
- C语言函数中的参数有const的问题
- 表白c语言程序设计,C语言编程学习打造表白神器:亲爱的让我们相爱在一起
- rabbitmq的相关知识
- php 注册树,php常用设计模式(单例,工厂,注册树模式)
- cesium billboard 设置距离控制可见度
- Angular 下拉搜索框实现
- Tensorflow实现MLP
- 药学专业报计算机一级有用吗,全网友泣泪劝阻!高考结束之后,什么专业千万不能报?...
- informix 数据库锁表分析和解决方法
- 2014ACM/ICPC亚洲区西安站 F题 color (组合数学,容斥原理)
- Flask项目之手机端租房网站的实战开发(十三)
- 用TestComplete实现一个关键字驱动测试框架
- 【python爬虫】爬取《英雄联盟》英雄及皮肤图片数据
- Linux 驱动开发 六十六:多点触控(MT)协议
- 一个域名下面能搭建多个网站吗?
- 有哪些分体式降噪耳机推荐?最值得入手的分体式降噪耳机
热门文章
- Magisk工具使用指南
- 售后支持领域的服务指标
- Java Exer0908 从键盘输入皆为正整数的数组元素,数组长度不确定,请找出数组中重复的数字并输出。
- 华为畅享二十Android是,华为畅享20 Pro智慧护眼怎么样?华为畅享20 Pro智慧护眼详解...
- Vue全家桶系列之Vuex(二)
- cocos creater 查线上bug之-解密反编译jsc
- 读书笔记---《编写可读代码的艺术》
- seoer请不要把自己定位成seoer
- c语言计算时钟的夹角不用if,C语言学习笔记——计算时钟的夹角
- 做个网页游戏送女票当情侣礼物