即時得到上述的錯誤:ERR:無法提取響應:沒有合適HttpMessageConverter
控制器:
@Component
public class NiftyController {
@Autowired
private RestProxyTemplate restTemplate;
@Autowired
private NiftyDAO niftyDAO;
int count=1;
@Scheduled(fixedDelay=5000)
//@Scheduled(cron="*/5 * * * * ?")
public void loadNiftyData() throws URISyntaxException {
System.out.println("Method executed at every 5 seconds. Current time is : "+ new Date());
System.out.println("Executed " +count++ +" Times");
URI uri = new URI("https://www.nseindia.com/live_market/dynaContent/live_watch/stock_watch/niftyStockWatch.json");
ResponseEntity<NiftyDTO> niftyResponse = restTemplate.getRestTemplate().exchange(uri, HttpMethod.GET, null, NiftyDTO.class);
NiftyDTO nifties = niftyResponse.getBody();
System.out.println(nifties.getTrdVolumesum());
//List<Nifty> saveNifty = niftyDAO.save(nifties);
//return (Nifty) nifties;
}
}
我想從上述鏈路獲取數據,並保存在數據庫中
DTO類
@JsonIgnoreProperties({"latestData","data"})
public class NiftyDTO {
private float trdVolumesumMil;
private String time;
private int declines;
private float trdValueSum;
private float trdValueSumMil;
private int unchanged;
private float trdVolumesum;
private int advances;
public float getTrdVolumesumMil() {
return trdVolumesumMil;
}
public void setTrdVolumesumMil(float trdVolumesumMil) {
this.trdVolumesumMil = trdVolumesumMil;
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
public int getDeclines() {
return declines;
}
public void setDeclines(int declines) {
this.declines = declines;
}
public float getTrdValueSum() {
return trdValueSum;
}
public void setTrdValueSum(float trdValueSum) {
this.trdValueSum = trdValueSum;
}
public float getTrdValueSumMil() {
return trdValueSumMil;
}
public void setTrdValueSumMil(float trdValueSumMil) {
this.trdValueSumMil = trdValueSumMil;
}
public int getUnchanged() {
return unchanged;
}
public void setUnchanged(int unchanged) {
this.unchanged = unchanged;
}
public float getTrdVolumesum() {
return trdVolumesum;
}
public void setTrdVolumesum(float trdVolumesum) {
this.trdVolumesum = trdVolumesum;
}
public int getAdvances() {
return advances;
}
public void setAdvances(int advances) {
this.advances = advances;
}
}
RestProxyTemplate:
@Component
public final class RestProxyTemplate {
RestTemplate restTemplate;
@PostConstruct
public void init(){
restTemplate = new RestTemplate();
SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
InetSocketAddress address = new InetSocketAddress("MY PROXY GOES HERE",8080);
Proxy proxy = new Proxy(Proxy.Type.HTTP,address);
factory.setProxy(proxy);
restTemplate.setRequestFactory(factory);
}
public RestTemplate getRestTemplate() {
return restTemplate;
}
}
錯誤日誌:
Method executed at every 5 seconds. Current time is : Mon Jun 05 10:45:38 IST 2017
Executed 1 Times
2017-06-05 10:45:38.141 INFO 108988 --- [ main]
s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8090 (http)
2017-06-05 10:45:38.153 INFO 108988 --- [ main]
com.MyApplication.portfolio.PMSApplication : Started PMSApplication in 5.041 seconds (JVM running for 5.573)
2017-06-05 10:45:39.028 ERROR 108988 --- [pool-2-thread-1] o.s.s.s.TaskUtils$LoggingErrorHandler : Unexpected error occurred in scheduled task.
org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.MyApplication.portfolio.controller.NiftyDTO] and content type [text/plain]
at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:109) ~[spring-web-4.2.8.RELEASE.jar:4.2.8.RELEASE]
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:835) ~[spring-web-4.2.8.RELEASE.jar:4.2.8.RELEASE]
at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:819) ~[spring-web-4.2.8.RELEASE.jar:4.2.8.RELEASE]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:599) ~[spring-web-4.2.8.RELEASE.jar:4.2.8.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:572) ~[spring-web-4.2.8.RELEASE.jar:4.2.8.RELEASE]
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:493) ~[spring-web-4.2.8.RELEASE.jar:4.2.8.RELEASE]
at com.MyApplication.portfolio.controller.NiftyController.loadNiftyData(NiftyController.java:44) ~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_92]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_92]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_92]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_92]
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:65) ~[spring-context-4.2.8.RELEASE.jar:4.2.8.RELEASE]
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54) ~[spring-context-4.2.8.RELEASE.jar:4.2.8.RELEASE]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_92]
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [na:1.8.0_92]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [na:1.8.0_92]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [na:1.8.0_92]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_92]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_92]
at java.lang.Thread.run(Thread.java:745) [na:1.8.0_92]
即時得到否Sutiable HttpMessageConverter找到的響應類型,可以有一個人建議這樣做的可能的解決方案??
響應看起來像什麼?響應的內容類型是什麼?您可以檢查RestTemplate確定支持的內容類型或編碼類型,或者可以正確處理響應內容。發佈更多詳細信息會有幫助。 –
我沒有得到任何迴應。 – DeathPulse
那麼你希望春天如何處理? –