#这个小demo是本人根据官方api自行编写,亲测可用#
1、导入相关jar包
注意:
1.这里导包错误会报
java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException的错误,
2.这里不能使用lang3和collections4,要使用lang2和collections3,不然还是会报上面的错误。
这里我建的是一个简单的只有springmvc的动态web项目,就是个小demo,没啥难度的。
package com.zsl.conversion;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import net.sf.json.JSONObject;
@Controller
public class JuheDemo {
@Autowired
public static final String DEF_CHATSET = "UTF-8";
@Autowired
public static final int DEF_CONN_TIMEOUT = 30000;
@Autowired
public static final int DEF_READ_TIMEOUT = 30000;
@Autowired
public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36";
//配置您申请的KEY
@Autowired
public static final String APPKEY ="APPKEY";
//1.常用汇率查询
@RequestMapping("/getRequest1")
@ResponseBody
public static void getRequest1(){
String result =null;
String url ="http://op.juhe.cn/onebox/exchange/query";//请求接口地址
Map params = new HashMap();//请求参数
params.put("key",APPKEY);//应用APPKEY(应用详细页查询)
try {
result =net(url, params, "GET");
JSONObject object = JSONObject.fromObject(result);
if(object.getInt("error_code")==0){
System.out.println(object.get("result"));
}else{
System.out.println(object.get("error_code")+":"+object.get("reason"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
//2.货币列表
@RequestMapping("/getRequest2")
@ResponseBody
public static void getRequest2(){
String result =null;
String url ="http://op.juhe.cn/onebox/exchange/list";//请求接口地址
Map params = new HashMap();//请求参数
params.put("key",APPKEY);//应用APPKEY(应用详细页查询)
try {
result =net(url, params, "GET");
JSONObject object = JSONObject.fromObject(result);
if(object.getInt("error_code")==0){
System.out.println(object.get("result"));
}else{
System.out.println(object.get("error_code")+":"+object.get("reason"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
//3.实时汇率查询换算
@RequestMapping("/getRequest3")
@ResponseBody
public static void getRequest3(){
String result =null;
String url ="http://op.juhe.cn/onebox/exchange/currency";//请求接口地址
Map params = new HashMap();//请求参数
params.put("from","CNY");//转换汇率前的货币代码,这里的CNY是中国货币代码,USD是美国货币代码,具体请查api
params.put("to","USD");//转换汇率成的货币代码
params.put("key",APPKEY);//应用APPKEY(应用详细页查询)
try {
result =net(url, params, "GET");
JSONObject object = JSONObject.fromObject(result);
if(object.getInt("error_code")==0){
System.out.println(object.get("result"));
}else{
System.out.println(object.get("error_code")+":"+object.get("reason"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @param strUrl 请求地址
* @param params 请求参数
* @param method 请求方法
* @return 网络请求字符串
* @throws Exception
*/
public static String net(String strUrl, Map params,String method) throws Exception {
HttpURLConnection conn = null;
BufferedReader reader = null;
String rs = null;
try {
StringBuffer sb = new StringBuffer();
if(method==null || method.equals("GET")){
strUrl = strUrl+"?"+urlencode(params);
}
URL url = new URL(strUrl);
conn = (HttpURLConnection) url.openConnection();
if(method==null || method.equals("GET")){
conn.setRequestMethod("GET");
}else{
conn.setRequestMethod("POST");
conn.setDoOutput(true);
}
conn.setRequestProperty("User-agent", userAgent);
conn.setUseCaches(false);
conn.setConnectTimeout(DEF_CONN_TIMEOUT);
conn.setReadTimeout(DEF_READ_TIMEOUT);
conn.setInstanceFollowRedirects(false);
conn.connect();
if (params!= null && method.equals("POST")) {
try {
DataOutputStream out = new DataOutputStream(conn.getOutputStream());
out.writeBytes(urlencode(params));
} catch (Exception e) {
// TODO: handle exception
}
}
InputStream is = conn.getInputStream();
reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET));
String strRead = null;
while ((strRead = reader.readLine()) != null) {
sb.append(strRead);
}
rs = sb.toString();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
reader.close();
}
if (conn != null) {
conn.disconnect();
}
}
return rs;
}
//将map型转为请求参数型
public static String urlencode(Map<String,Object>data) {
StringBuilder sb = new StringBuilder();
for (Map.Entry i : data.entrySet()) {
try {
sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return sb.toString();
}
public static void main(String[] args) {
}
}
Springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
<context:component-scan base-package="com.zsl.conversion"/>
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!-- 防止资源文件被spring MVC拦截 -->
<mvc:resources mapping="/img/**" location="/img/"
cache-period="31556926" />
<mvc:resources mapping="/js/**" location="/js/"
cache-period="31556926" />
<mvc:resources mapping="/css/**" location="/css/"
cache-period="31556926" />
</beans>
Web.xml
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
测试结果:(Json格式)
1.常用汇率查询
{"update":"2019-07-08 20:27:26","list":[["澳大利亚元","100","480.8100","465.8700","484.3400","482.5900"],["澳门元","100","85.6700","82.8000","86.0100","85.7600"],["港币","100","88.0600","87.3600","88.4100","88.2100"],["韩元","100","0.5852","0.5647","0.5900","0.5878"],["加拿大元","100","524.4800","507.9200","528.3500","526.4800"],["美元","100","686.3600","680.7700","689.2700","686.9700"],["欧元","100","771.8900","747.9100","777.5800","775.2500"],["日元","100","6.3427","6.1456","6.3894","6.3717"],["英镑","100","860.3800","833.6500","866.7100","864.3900"]]}
2.货币列表
{"list":[{"name":"人民币","code":"CNY"},{"name":"美元","code":"USD"},{"name":"日元","code":"JPY"},{"name":"欧元","code":"EUR"},{"name":"英镑","code":"GBP"},{"name":"韩元","code":"KRW"},{"name":"港币","code":"HKD"},{"name":"澳大利亚元","code":"AUD"},{"name":"加拿大元","code":"CAD"},{"name":"阿尔及利亚第纳尔","code":"DZD"},{"name":"阿根廷比索","code":"ARS"},{"name":"爱尔兰镑","code":"IEP"},{"name":"埃及镑","code":"EGP"},{"name":"阿联酋迪拉姆","code":"AED"},{"name":"阿曼里亚尔","code":"OMR"},{"name":"奥地利先令","code":"ATS"},{"name":"澳门元","code":"MOP"},{"name":"百慕大元","code":"BMD"},{"name":"巴基斯坦卢比","code":"PKR"},{"name":"巴拉圭瓜拉尼","code":"PYG"},{"name":"巴林第纳尔","code":"BHD"},{"name":"巴拿马巴尔博亚","code":"PAB"},{"name":"保加利亚列弗","code":"BGN"},{"name":"巴西雷亚尔","code":"BRL"},{"name":"比利时法郎","code":"BEF"},{"name":"冰岛克朗","code":"ISK"},{"name":"博茨瓦纳普拉","code":"BWP"},{"name":"波兰兹罗提","code":"PLN"},{"name":"玻利维亚诺","code":"BOB"},{"name":"丹麦克朗","code":"DKK"},{"name":"德国马克","code":"DEM"},{"name":"法国法郎","code":"FRF"},{"name":"菲律宾比索","code":"PHP"},{"name":"芬兰马克","code":"FIM"},{"name":"哥伦比亚比索","code":"COP"},{"name":"古巴比索","code":"CUP"},{"name":"哈萨克坚戈","code":"KZT"},{"name":"荷兰盾","code":"NLG"},{"name":"加纳塞地","code":"GHC"},{"name":"捷克克朗","code":"CZK"},{"name":"津巴布韦元","code":"ZWD"},{"name":"卡塔尔里亚尔","code":"QAR"},{"name":"克罗地亚库纳","code":"HRK"},{"name":"肯尼亚先令","code":"KES"},{"name":"科威特第纳尔","code":"KWD"},{"name":"老挝基普","code":"LAK"},{"name":"拉脱维亚拉图","code":"LVL"},{"name":"黎巴嫩镑","code":"LBP"},{"name":"林吉特","code":"MYR"},{"name":"立陶宛立特","code":"LTL"},{"name":"卢布","code":"RUB"},{"name":"罗马尼亚新列伊","code":"RON"},{"name":"毛里求斯卢比","code":"MUR"},{"name":"蒙古图格里克","code":"MNT"},{"name":"孟加拉塔卡","code":"BDT"},{"name":"缅甸缅元","code":"BUK"},{"name":"秘鲁新索尔","code":"PEN"},{"name":"摩洛哥迪拉姆","code":"MAD"},{"name":"墨西哥比索","code":"MXN"},{"name":"南非兰特","code":"ZAR"},{"name":"挪威克朗","code":"NOK"},{"name":"葡萄牙埃斯库多","code":"PTE"},{"name":"瑞典克朗","code":"SEK"},{"name":"瑞士法郎","code":"CHF"},{"name":"沙特里亚尔","code":"SAR"},{"name":"斯里兰卡卢比","code":"LKR"},{"name":"索马里先令","code":"SOS"},{"name":"泰国铢","code":"THB"},{"name":"坦桑尼亚先令","code":"TZS"},{"name":"土耳其新里拉","code":"TRY"},{"name":"突尼斯第纳尔","code":"TND"},{"name":"危地马拉格查尔","code":"GTQ"},{"name":"委内瑞拉玻利瓦尔","code":"VEB"},{"name":"乌拉圭新比索","code":"UYU"},{"name":"西班牙比塞塔","code":"ESP"},{"name":"希腊德拉克马","code":"GRD"},{"name":"新加坡元","code":"SGD"},{"name":"新台币","code":"TWD"},{"name":"新西兰元","code":"NZD"},{"name":"匈牙利福林","code":"HUF"},{"name":"牙买加元","code":"JMD"},{"name":"义大利里拉","code":"ITL"},{"name":"印度卢比","code":"INR"},{"name":"印尼盾","code":"IDR"},{"name":"以色列谢克尔","code":"ILS"},{"name":"约旦第纳尔","code":"JOD"},{"name":"越南盾","code":"VND"},{"name":"智利比索","code":"CLP"},{"name":"白俄罗斯卢布","code":"BYR"}]}
3.实时汇率查询换算
[{"currencyF":"CNY","currencyF_Name":"人民币","currencyT":"USD","currencyT_Name":"美元","currencyFD":"1","exchange":"0.1453","result":"0.1453","updateTime":"2019-07-08 20:24:44"},{"currencyF":"USD","currencyF_Name":"美元","currencyT":"CNY","currencyT_Name":"人民币","currencyFD":"1","exchange":"6.8808","result":"6.8808","updateTime":"2019-07-08 20:24:44"}]