您可以使用UriComponentsBuilder
来构建URI
:
URI uri = UriComponentsBuilder.fromHttpUrl("https://example.com/mypage").path("/{id}.xml").build(id);
myWebClient.get()
.uri(uri)
.header(AUTHORIZATION, getAuthorizationHeaderValue(username, password))
....
或者,如果您需要发送的 HTTP 请求有一些通用设置(即在您的情况下是基本 url 和 Authorization 标头),您可以在WebClient.Builder
级别配置它们。默认情况下,此构建器的WebClient
构建将使用这些通用设置进行配置,因此您无需为每个 HTTP 请求一次又一次地配置它们。就像是:
@Component
public class ExampleComClient {
private final WebClient webClient;
@Autowired
public ExampleComClient(WebClient.Builder builder) {
this.webClient = builder.baseUrl("https://example.com/mypage")
.defaultHeader(AUTHORIZATION, getAuthorizationHeaderValue(username, password))
.build();
}
public String getById(Integer id){
return webClient.get()
.uri(uriBuilder -> uriBuilder.path("/{id}.xml").build(id))
.accept(MediaType.TEXT_XML)
.retrieve()
.bodyToMono(String.class)
.block();
}
public String getByName(String name){
return webClient.get()
.uri(uriBuilder -> uriBuilder.queryParam("name",name).build())
.accept(MediaType.TEXT_XML)
.retrieve()
.bodyToMono(String.class)
.block();
}
}