我正在使用Spring @Component类,并且试图获取特定URL的HTTP状态代码以进行进一步处理。我的功能如下:
fun getStatus() : String
{
val webClient = WebClient.create("https://stackoverflow.com")
val result = webClient.get()
.exchange().map { res -> res.rawStatusCode() }
println(result)
return "statusGotten"
}
但是,我没有得到状态码的Int值(例如200或401),而是得到了“ MonoMap”。
总体而言,我对Spring和Web编程都是陌生的,所以我对如何从此处开始感到困惑。我知道“结果”将作为“单声道”返回,但是我不清楚“单声道”是什么,或者如何将其转换为具有更可伸缩属性的东西,甚至看不到“结果”调试器中的“”并没有说明HTTP请求是实际发送还是成功发送:
我给网络客户端打电话不正确吗?还是仅仅是无法以有意义的方式解析结果数据?任何关于如何或在哪里可以学习有关基础主题的建议也将不胜感激。
答案 0 :(得分:0)
如果您需要使用阻止方法来轻松完成此操作
@Test
public void myTest(){
WebClient client = WebClient.builder().baseUrl("https://stackoverflow.com/").build();
ClientResponse resp = client
.get()
.uri("questions/")
.exchange()
.block();
System.out.println("Status code response is: "+resp.statusCode());
}
但是为此,您可以直接使用RestTemplate代替webclient ...推荐的方法是不阻塞,这意味着您应该返回状态为Mono的对象,并在方法外使用,例如:
public Mono<HttpStatus> myMethod(){
WebClient client = WebClient.builder().baseUrl("https://stackoverflow.com/").build();
return client
.get()
.uri("questions/")
.exchange()
.map( clientResp -> clientResp.statusCode());
}
使用此Mono的方式取决于您的代码...