У меня есть этот API, я пытаюсь потреблять, и это ссылка https://www.live-rates.com/api/price?key=123456&rate=EUR_USD
Я пробовал это в моем контроллере
@ResponseBody
@RequestMapping(value = { "/start" }, method = RequestMethod.GET)
public String start() {
RestTemplate restTemplate = new RestTemplate();
String quote = restTemplate.getForObject("https://www.live-rates.com/api/price?key=123456&rate=EUR_USD", String.class);
return quote.toString();
}
и это в моей программе планирования
package com.boilerplate.components;
import java.util.Date;
import org.slf4j.Logger;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Async;
import com.boilerplate.services.MessageListenerService;
import java.util.Random;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.query.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.client.RestTemplate;
@Repository
@Transactional
@Configuration
@EnableAsync
@EnableScheduling
public class Scheduler {
//Database read and update and delete
@Autowired
private RabbitTemplate rabbitTemplate;
private static final Logger LOGGER = org.slf4j.LoggerFactory.getLogger(MessageListenerService.class);
@Autowired
private SessionFactory sessionFactory;
@Async
@Scheduled(cron="*/60 * * * * *")
public void doSomething(){
RestTemplate restTemplate = new RestTemplate();
String quote = restTemplate.getForObject("https://www.live-rates.com/api/price?key=123456&rate=EUR_USD", String.class);
LOGGER.info(quote.toString());
}
}
и все они не могут получить обменный курс.
Я получаю эту ошибку при использовании планировщика
SEVERE: произошла непредвиденная ошибка при вызове асинхронного метода public void
com.boilerplate.components.Scheduler.doSomething ()».
org.springframework.web.client.HttpClientErrorException: 403 запрещено
в org.springframework.web.client.DefaultResponseErrorHandler.handleError (DefaultResponseErrorHandler.java:91)
в org.springframework.web.client.RestTemplate.handleResponse (RestTemplate.java:641)
в org.springframework.web.client.RestTemplate.doExecute (RestTemplate.java:597)
в org.springframework.web.client.RestTemplate.execute (RestTemplate.java:557)
в org.springframework.web.client.RestTemplate.getForObject (RestTemplate.java:264)
на com.boilerplate.components.Scheduler.doSomething (Scheduler.java:53)
на com.boilerplate.components.Scheduler $$ FastClassBySpringCGLIB $$ 17802b05.invoke ()
в org.springframework.cglib.proxy.MethodProxy.invoke (MethodProxy.java:204)
в org.springframework.aop.framework.CglibAopProxy $ CglibMethodInvocation.invokeJoinpoint (CglibAopProxy.java:720)
в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:157)
в org.springframework.transaction.interceptor.TransactionInterceptor $ 1.proceedWithInvocation (TransactionInterceptor.java:99)
в org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction (TransactionAspectSupport.java:281)
в org.springframework.transaction.interceptor.TransactionInterceptor.invoke (TransactionInterceptor.java:96)
в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:179)
в org.springframework.aop.interceptor.AsyncExecutionInterceptor $ 1.call (AsyncExecutionInterceptor.java:115)
в java.util.concurrent.FutureTask.run (FutureTask.java:266)
at java.lang.Thread.run (Thread.java:748)
и это при использовании контроллера
HTTP ОШИБКА 500
Проблема доступа / шаблон / запуск. Причина:
Server Error
Причина:
org.springframework.web.util.NestedServletException: Запрос
обработка не удалась; вложенное исключение
org.springframework.web.client.HttpClientErrorException: 403 запрещено
в
org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:979)
в
org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:858)
в javax.servlet.http.HttpServlet.service (HttpServlet.java:687) в
org.springframework.web.servlet.FrameworkServlet.service (FrameworkServlet.java:843)
в javax.servlet.http.HttpServlet.service (HttpServlet.java:790) в
org.eclipse.jetty.servlet.ServletHolder.handle (ServletHolder.java:800)
в
org.eclipse.jetty.servlet.ServletHandler $ CachedChain.doFilter (ServletHandler.java:1669)
Я пытался использовать другие json apis, такие как https://jsonplaceholder.typicode.com/posts/1
, и я могу получить json без проблем.
Почему я не могу получить обменный курс, используя шаблон остальных.