我正在使用groovy、spring5、springboot2,并且我试图用WebClient替换Resttemplate,以便进行一些同步HTTP(REST)调用。在.groovy中无法识别webClient.get().uri("").retrieve()中的Retrieve() (编译错误),而在.java中可以使用相同的代码
WebClientJava.java
import org.springframework.web.reactive.function.client.WebClient;
public class WebClientJava {
String retriever(){
WebClient webClient = WebClient.create();
String responsess = webClient.get().uri("").retrieve().bodyToMono(String.class).block();
return responsess;
}
}WebClientGroovy.groovy
import org.springframework.web.reactive.function.client.WebClient
class WebClientGroovy {
String retriever(){
WebClient webClient = WebClient.create()
WebClient.RequestHeadersSpec responsess = webClient.get().uri("").retrieve().bodyToMono(String.class).block()
return responsess
}
}我希望它可以和groovy一起工作,因为它可以和java一起工作。有没有人遇到或者有什么想法?
发布于 2019-05-30 03:25:29
您的问题似乎是由IntelliJ IDEA中的一个错误引起的,因为使用Maven.在命令行上成功构建了示例项目。
uri方法返回S,并将S定义为S extends RequestHeadersSpec<?>。集成开发环境似乎无法处理这一点,并认为它正在处理一个被它视为java.lang.Object的?。我推荐reporting the problem to JetBrains。
同时,您可以通过强制转换来自uri的返回来解决此问题
String responses = ((WebClient.RequestHeadersSpec)webClient.get().uri(""))
.retrieve().bodyToMono(String.class).block()https://stackoverflow.com/questions/56241236
复制相似问题