我试图从openweathermap api中检索天气细节,一些我无法使其工作的原因如下错误。如有任何帮助,我将不胜感激
@Controller
public class CurrentWeatherController {
private final StubWeatherService stubWeatherService;
private final LiveWeatherService liveWeatherService;
public CurrentWeatherController(StubWeatherService stubWeatherService, LiveWeatherService liveWeatherService) {
this.stubWeatherService = stubWeatherService;
this.liveWeatherService = liveWeatherService;
}
@GetMapping("/current-weather")
public String getCurrentWeather(Model model) {
model.addAttribute("currentWeather", liveWeatherService.getCurrentWeather("Detroit","us"));
return "current-weather";
}
public StubWeatherService getStubWeatherService() {
return stubWeatherService;
}
服务代码
@Service
public class LiveWeatherService {
private static final String WEATHER_URL = "http://api.openweathermap.org/data/2.5/weather?q={city},{country}&APPID={key}&units=metric";
private final String apiKey="526a647fcd4f3f465c0340c19d26ef3a";
private final RestTemplate restTemplate;
private final ObjectMapper objectMapper;
public LiveWeatherService(RestTemplateBuilder restTemplateBuilder, ObjectMapper objectMapper) {
this.restTemplate = restTemplateBuilder.build();
this.objectMapper = objectMapper;
}
public CurrentWeather getCurrentWeather(String city, String country) {
URI url = new UriTemplate(WEATHER_URL).expand(city, country,this.apiKey); // line 34 issue with accepting apikey
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
return convert(response);
}
private CurrentWeather convert(ResponseEntity<String> response) {
try {
JsonNode root = objectMapper.readTree(response.getBody());
return new CurrentWeather(root.path("weather").get(0).path("main").asText(),
BigDecimal.valueOf(root.path("main").path("temp").asDouble()),
BigDecimal.valueOf(root.path("main").path("feels_like").asDouble()),
BigDecimal.valueOf(root.path("wind").path("speed").asDouble()));
} catch (JsonProcessingException e) {
throw new RuntimeException("Error parsing JSON", e);
}
}
}
错误
2-07 02:34:48.710错误43384---[nio-8080-exec-3]O.A.C.C.C.[.[.[/].[dispatcherServlet]:路径为[]的上下文中servlet[dispatcherServlet]的servlet.service()引发异常[处理程序调度失败;嵌套异常为java.lang.ERROR:未解决的编译问题:类型不匹配:无法从UriTemplate转换为URI]有根本原因
java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from UriTemplate to URI
at com.meshupProjekt.service.LiveWeatherService.getCurrentWeather(LiveWeatherService.java:34)
对我来说,您的代码是这样工作的:
String WEATHER_URL = "http://api.openweathermap.org/data/2.5/weather?q={city},{country}&APPID={key}&units=metric";
String apiKey = "526a647fcd4f3f465c0340c19d26ef3a";
var x = new UriTemplate(WEATHER_URL).expand("Darmstadt", "Deutschland", apiKey);
System.out.println(x);
而不是URI
,我使用了var
,以便Java选择正确的类型。
您的编译错误可能是由URI
类的错误导入引起的。
问题内容: 我有以下课程: 我的所有实体类都使用该类。 所以我有以下课程 和 因此,当我创建一个新客户时,出现以下错误: 我在这里做错了。 问题答案: 至少在使用JPA 的API 时,and 回调确实在…中工作,这在您的情况下还不清楚。 您在使用还是API?在后一种情况下,使用注解的方法,从JPA注释将不会被调用(和我的建议是使用监听器或拦截器)。
问题内容: 我一直在使用Spring JDBC取得了巨大的成功,但是我在这个项目中遇到了很多麻烦。我将在此处发布代码链接(这是一个小而愚蠢的项目,用于测试是否可以启动并运行它,以便将来可以使用Hibernate): xml文件:http://codepaste.net/uw19zc 主文件:http : //codepaste.net/iks1cp 我遇到很多错误,例如 而且我还没有创建一个.ou
我正在尝试将VaultCustomQueryCriteria(Corda-Java)与聚合函数SUM一起使用,但没有得到任何结果。 如果我使用另一个VaultCustomQueryCriteria,则查询有效。 我做错了什么? 下面是一些例子: 查询成功: 查询KO:(没有结果)
我已经复制了特性和插件,并分别粘贴在eclipse特性和插件文件夹中。现在,如果我创建TestNG类, 我得到以下错误“选定的向导无法启动。插件org.testng.eclipse.wizards.newtestngClassWizard.org.testng.eclipse.wizards.newtestngClassWizard无法加载类org.testng.eclipse.wizards.n
本文向大家介绍jQuery中 delegate使用的问题,包括了jQuery中 delegate使用的问题的使用技巧和注意事项,需要的朋友参考一下 习惯了bind,用惯了live,就不习惯delegate了呀有木有... 支持为动态生成的标签元素绑定事件也许就live和delegate了吧,不过新版本已经不支持live了,只有delegate delegate真的比较特殊呀,不同于其他事件绑定的风
问题内容: 我正在编写一段代码,以使用对称加密来加密文本。但这并没有带来正确的结果… 在这里,解密后的文本与原始文本不同。 我对密码学不是很了解,所以请多多包涵。我知道CTR模式每次都需要一个“计数器”功能来提供一个随机计数器,但是为什么当我的密钥是32字节并且它也坚持我的消息也是16字节的倍数时,为什么它需要是16字节?这正常吗? 我猜想它不会回到原始消息,因为计数器在加密和解密之间发生了变化。