调用百度汇率api 获取各国的汇率值
生活随笔
收集整理的這篇文章主要介紹了
调用百度汇率api 获取各国的汇率值
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
設置一個定時任務,每天更新匯率java代碼如下
package com.thinkgem.jeesite.modules.huiLvApi.service;import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.Date; import java.util.List;import org.activiti.engine.impl.util.json.JSONArray; import org.codehaus.jettison.json.JSONException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Service;import com.thinkgem.jeesite.common.utils.GsonUtils; import com.thinkgem.jeesite.modules.huiLvApi.entity.RetData; import com.thinkgem.jeesite.modules.huiLvApi.entity.Root; import com.thinkgem.jeesite.modules.sys.entity.Dict; import com.thinkgem.jeesite.modules.sys.service.DictService;/*** 調用百度匯率api* * @author Administrator* */ @Service @Scope public class HuiLvService {@AutowiredDictService dictService;/*** @param urlAll* :請求接口* @param httpArg* :參數* @return 返回結果*/public static String request(String httpUrl, String httpArg) {BufferedReader reader = null;String result = null;StringBuffer sbf = new StringBuffer();httpUrl = httpUrl + "?" + httpArg;try {URL url = new URL(httpUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");// 填入apikey到HTTP headerconnection.setRequestProperty("apikey", "0d263364faa016e5f06075b69b799087");connection.connect();InputStream is = connection.getInputStream();reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));String strRead = null;while ((strRead = reader.readLine()) != null) {sbf.append(strRead);sbf.append("\r\n");}reader.close();result = sbf.toString();} catch (Exception e) {e.printStackTrace();}return result;}/*** 定時任務每天執行調用百度匯率api* * @throws JSONException*/public void queryHuiLv() {String httpUrl = "http://apis.baidu.com/apistore/currencyservice/currency";String httpArg = null;Dict dict = new Dict();dict.setType("hui_lv");List<Dict> dictList = dictService.findList(dict);// 查詢出數據庫表中所有的匯率if (dictList != null && dictList.size() > 0) {for (Dict dt : dictList) {String value = dt.getValue();httpArg = "fromCurrency=" + value + "&toCurrency=CNY&amount=1";if (!"1".equals(value)) {// 表里面目前有個舍客勒 鍵值是1,所以調用百度接口時無法識別String data = request(httpUrl, httpArg);try {if (data != null && !"".equals(data)) {Root rt = GsonUtils.json2T(data, Root.class);RetData retData = rt.getRetData();dt.setValue(retData.getFromCurrency());// 匯率簡稱dt.setLabel(retData.getCurrency());// 值dt.setUpdateDate(new Date());dictService.updateHuiLv(dt);System.out.println(data);System.out.println(retData);}} catch (Exception e) {e.printStackTrace();}}}}}/*** 測試用* * @param httpUrl* @param httpArg* @return*/public static String newRequest(String httpUrl, String httpArg) {BufferedReader reader = null;String result = null;StringBuffer sbf = new StringBuffer();httpUrl = httpUrl + "?" + httpArg;try {URL url = new URL(httpUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");// 填入apikey到HTTP headerconnection.setRequestProperty("apikey", "0d263364faa016e5f06075b69b799087");connection.connect();InputStream is = connection.getInputStream();reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));String strRead = null;while ((strRead = reader.readLine()) != null) {sbf.append(strRead);sbf.append("\r\n");}reader.close();result = sbf.toString();} catch (Exception e) {e.printStackTrace();}return result;}public static void main(String[] args) {String httpUrl = "http://apis.baidu.com/apistore/currencyservice/currency";String httpArg = "fromCurrency=USD&toCurrency=CNY&amount=1";String jsonResult = newRequest(httpUrl, httpArg);System.out.println(jsonResult);} }定時任務配置配置文件名稱是spring-tasks.xml ?(spring-tasks.xml 里面有配置如何定時執行queryHuiLv)請留意看
<?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:c="http://www.springframework.org/schema/c" xmlns:cache="http://www.springframework.org/schema/cache" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:lang="http://www.springframework.org/schema/lang" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:task="http://www.springframework.org/schema/task" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:util="http://www.springframework.org/schema/util"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsdhttp://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"><!-- 定時清除手機短信redis緩存 --><task:scheduled-tasks scheduler="scheduler"> <!-- <task:scheduled ref="yuDengJiPushService" method="queryYuDengJiPush" cron="0 0/1 * * * ?"/> --> <task:scheduled fixed-delay="3600000" initial-delay="3000" ref="flightService" method="queryIndexFlight" /><task:scheduled ref="systemService" method="clearSmsCache" cron="0 30 23 ? * * " /> <task:scheduled ref="exhiMainService" method="handleCuXiaoEnd" cron="0 0 8 * * ?" /><task:scheduled ref="exhiMainService" method="outDateExhi" cron="0 30 0 ? * * " /><task:scheduled ref="xuQiuService" method="setXuQiuCount" cron="* * 10,12,14,15,16,17 * * ? " /><task:scheduled ref="columnService" method="cleanOutDateExhi" cron="0 30 0 ? * * " /><task:scheduled ref="orderMainService" method="kaiZhanTiShi" cron="0 0 7 * * ?" /><task:scheduled ref="yuDengJiPushService" method="queryYuDengJiPush" cron="0 30 8 * * ?"/><task:scheduled ref="searchRecordService" method="batchSave" cron="0 0/10 * * * ? "/><task:scheduled ref="fenXiaoRecordService" method="batchSave" cron="0 10 0 * * ? "/><task:scheduled ref="logService" method="batchSave" cron="0 0/2 * * * ? "/><task:scheduled ref="systemService" method="kaiFaRenYuanPush" cron="0 0 9 * * ?"/><!-- <task:scheduled ref="huiLvService" method="queryHuiLv" cron="0 0 21 * * ?"/> --><!-- <task:scheduled ref="huiLvService" method="queryHuiLv" cron="0 0/1 * * * ?"/> --></task:scheduled-tasks> </beans>spring-tasks.xml 配置在spring-context.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:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:util="http://www.springframework.org/schema/util" xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsdhttp://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"default-lazy-init="true"><description>Spring Configuration</description><!-- 加載配置屬性文件 --><context:property-placeholder ignore-unresolvable="true" location="classpath:jeesite.properties" /><task:scheduled-tasks scheduler="scheduler"> <task:scheduled ref="orderMainService" method="cuiKuan" cron="${allipay.cron.cuikuan}" /> </task:scheduled-tasks> <!-- 加載應用屬性實例,可通過 @Value("#{APP_PROP['jdbc.driver']}") String jdbcDriver 方式引用 --><util:properties id="APP_PROP" location="classpath:jeesite.properties" local-override="true"/><!-- 使用Annotation自動注冊Bean,解決事物失效問題:在主容器中不掃描@Controller注解,在SpringMvc中只掃描@Controller注解。 --><context:component-scan base-package="com.thinkgem.jeesite,com.allinpay"><!-- base-package 如果多個,用“,”分隔 --><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!-- MyBatis begin --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="typeAliasesPackage" value="com.thinkgem.jeesite"/><property name="typeAliasesSuperType" value="com.thinkgem.jeesite.common.persistence.BaseEntity"/><property name="mapperLocations" value="classpath:/mappings/**/*.xml"/><property name="configLocation" value="classpath:/mybatis-config.xml"></property></bean><!-- 掃描basePackage下所有以@MyBatisDao注解的接口 --><bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /><property name="basePackage" value="com.thinkgem.jeesite"/><property name="annotationClass" value="com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao"/></bean><!-- 定義事務 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource" /></bean><!-- 配置 Annotation 驅動,掃描@Transactional注解的類定義事務 --><tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/><!-- MyBatis end --><!-- 配置 JSR303 Bean Validator 定義 --><bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" /><!-- 緩存配置 --><bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"><property name="configLocation" value="classpath:${ehcache.configFile}" /></bean><!-- 計劃任務配置,用 @Service @Lazy(false)標注類,用@Scheduled(cron = "0 0 2 * * ?")標注方法 --><task:executor id="executor" pool-size="10"/> <task:scheduler id="scheduler" pool-size="10"/><task:annotation-driven scheduler="scheduler" executor="executor" proxy-target-class="true"/><!-- 數據源配置, 使用 BoneCP 數據庫連接池 --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> <!-- 數據源驅動類可不寫,Druid默認會自動根據URL識別DriverClass --><property name="driverClassName" value="${jdbc.driver}" /><!-- 基本屬性 url、user、password --><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /><!-- 配置初始化大小、最小、最大 --><property name="initialSize" value="${jdbc.pool.init}" /><property name="minIdle" value="${jdbc.pool.minIdle}" /> <property name="maxActive" value="${jdbc.pool.maxActive}" /><!-- 配置獲取連接等待超時的時間 --><property name="maxWait" value="60000" /><!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="60000" /><!-- 配置一個連接在池中最小生存的時間,單位是毫秒 --><property name="minEvictableIdleTimeMillis" value="300000" /><property name="validationQuery" value="${jdbc.testSql}" /><property name="testWhileIdle" value="true" /><property name="testOnBorrow" value="false" /><property name="testOnReturn" value="false" /><!-- 打開PSCache,并且指定每個連接上PSCache的大小(Oracle使用)<property name="poolPreparedStatements" value="true" /><property name="maxPoolPreparedStatementPerConnectionSize" value="20" /> --><!-- 配置監控統計攔截的filters --><property name="filters" value="stat" /> </bean><!-- 數據源配置, 使用應用服務器的數據庫連接池 <jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/jeesite" />--><!-- 數據源配置, 不使用連接池 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="${jdbc.driver}" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></bean>--><bean id="startupListener" class="com.thinkgem.jeesite.modules.sys.listener.StartupListener"/><bean id="Scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" /> <import resource="spring-tasks.xml"/> </beans>spring-context.xml 配置在web.xml 里面
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"version="2.5"><display-name>wanxiuAdmin</display-name><!-- Context ConfigLocation --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:/spring-context*.xml</param-value></context-param><listener><listener-class>com.thinkgem.jeesite.modules.sys.listener.WebContextListener</listener-class></listener><listener><listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener><filter><filter-name>encodingFilter</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>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- Apache Shiro --><filter><filter-name>shiroFilter</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class><init-param><param-name>targetFilterLifecycle</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>shiroFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- PageCache, cache .html suffix.<filter><filter-name>PageCacheFilter</filter-name><filter-class>com.thinkgem.jeesite.common.filter.PageCachingFilter</filter-class></filter><filter-mapping><filter-name>PageCacheFilter</filter-name><url-pattern>/</url-pattern></filter-mapping><filter-mapping><filter-name>PageCacheFilter</filter-name><url-pattern>*.html</url-pattern></filter-mapping>--><!-- SiteMesh --><filter><filter-name>sitemeshFilter</filter-name><filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class></filter><filter-mapping><filter-name>sitemeshFilter</filter-name><url-pattern>/a/*</url-pattern></filter-mapping><filter-mapping><filter-name>sitemeshFilter</filter-name><url-pattern>/f/*</url-pattern></filter-mapping><!-- MVC Servlet --><servlet><servlet-name>springServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath*:/spring-mvc*.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- Activiti --><servlet><servlet-name>RestletServlet</servlet-name><servlet-class>org.restlet.ext.servlet.ServerServlet</servlet-class><init-param><param-name>org.restlet.application</param-name><param-value>com.thinkgem.jeesite.modules.act.rest.ActRestApplication</param-value></init-param></servlet><servlet-mapping><servlet-name>RestletServlet</servlet-name><url-pattern>/act/rest/service/*</url-pattern></servlet-mapping><!-- DruidStatView --><servlet><servlet-name>DruidStatView</servlet-name><servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class><init-param><param-name>allow</param-name><param-value>127.0.0.1</param-value></init-param></servlet><servlet-mapping><servlet-name>DruidStatView</servlet-name><url-pattern>/druid/*</url-pattern></servlet-mapping><!-- CKFinder --><servlet><servlet-name>CKFinderConnectorServlet</servlet-name><servlet-class>com.thinkgem.jeesite.common.web.CKFinderConnectorServlet</servlet-class><init-param><param-name>XMLConfig</param-name><param-value>/WEB-INF/ckfinder.xml</param-value></init-param><init-param><param-name>debug</param-name><param-value>false</param-value></init-param><init-param><param-name>configuration</param-name><param-value>com.thinkgem.jeesite.common.web.CKFinderConfig</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>CKFinderConnectorServlet</servlet-name><url-pattern>/static/ckfinder/core/connector/java/connector.java</url-pattern></servlet-mapping><filter><filter-name>FileUploadFilter</filter-name><filter-class>com.ckfinder.connector.FileUploadFilter</filter-class><init-param><param-name>sessionCookieName</param-name><param-value>JSESSIONID</param-value></init-param><init-param><param-name>sessionParameterName</param-name><param-value>jsessionid</param-value></init-param></filter><filter-mapping><filter-name>FileUploadFilter</filter-name><url-pattern>/static/ckfinder/core/connector/java/connector.java</url-pattern></filter-mapping><!-- Userfiles download --><servlet><servlet-name>UserfilesDownloadServlet</servlet-name><servlet-class>com.thinkgem.jeesite.common.servlet.UserfilesDownloadServlet</servlet-class></servlet><servlet-mapping><servlet-name>UserfilesDownloadServlet</servlet-name><url-pattern>/userfiles/*</url-pattern></servlet-mapping><!-- Validate code --><servlet><servlet-name>ValidateCodeServlet</servlet-name><servlet-class>com.thinkgem.jeesite.common.servlet.ValidateCodeServlet</servlet-class></servlet><servlet-mapping><servlet-name>ValidateCodeServlet</servlet-name><url-pattern>/servlet/validateCodeServlet</url-pattern></servlet-mapping><!-- FineReport <servlet><servlet-name>ReportServer</servlet-name><servlet-class>com.fr.web.ReportServlet</servlet-class></servlet><servlet-mapping><servlet-name>ReportServer</servlet-name><url-pattern>/ReportServer</url-pattern></servlet-mapping>--><!-- [INSERT FRAGMENT HERE] --><!-- Session configure, to "jeesite.properties" file "session.sessionTimeout" parameter.<session-config><session-timeout>30</session-timeout></session-config>--><!-- Error page --><!-- <error-page><exception-type>java.lang.Throwable</exception-type><location>/WEB-INF/views/error/500.jsp</location></error-page> --><error-page><error-code>500</error-code><location>/WEB-INF/views/error/500.jsp</location></error-page><error-page><error-code>404</error-code><location>/WEB-INF/views/error/404.jsp</location></error-page></web-app>?
轉載于:https://www.cnblogs.com/SHMILYHP/p/5534408.html
總結
以上是生活随笔為你收集整理的调用百度汇率api 获取各国的汇率值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java教程——电商秒杀系统介绍
- 下一篇: 哪些方法能减轻打呼噜的症状呢?