我正在使用groovy,spring5,springboot2,并且我试图用WebClient替换Resttemplate以便进行一些同步的HTTP(REST)调用。 webClient.get().uri("").retrieve()
中的Retrieve()在.groovy中未被识别(编译错误),而相同的代码在.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一起使用。有没有人遇到或有任何想法?
答案 0 :(得分:1)
您的问题似乎是由于IntelliJ IDEA中的错误引起的,因为示例项目已使用Maven在命令行上成功构建。
uri
方法返回S
,其中S
被定义为S extends RequestHeadersSpec<?>
。 IDE似乎无法解决此问题,并认为它正在处理?
,它被视为java.lang.Object
。我会推荐reporting the problem to JetBrains。
与此同时,您可以通过投射uri
的收益来解决此问题:
String responses = ((WebClient.RequestHeadersSpec)webClient.get().uri(""))
.retrieve().bodyToMono(String.class).block()