मैं स्प्रिंग-वेबफ्लक्स वेबक्लाइंट का उपयोग करके सेवा को आराम करने के लिए स्ट्रिंग संदेश भेजने में असमर्थ हूं। नीचे कोड स्निपेट हैं:

public WebClient getWebClient(String baseUrl)
    {
        HttpClient httpClient = HttpClient.create()
                .tcpConfiguration(client ->
                        client.option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000)
                        .doOnConnected(conn -> conn
                                .addHandlerLast(new ReadTimeoutHandler(10))
                                .addHandlerLast(new WriteTimeoutHandler(10))));
         
        ClientHttpConnector connector = new ReactorClientHttpConnector(httpClient);     
     
        return WebClient.builder()
                .baseUrl(baseUrl)
                .clientConnector(connector)
                //.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
                .build();
    }

सेवा को हिट करने और प्रतिक्रिया के लिए सदस्यता लेने के लिए उपरोक्त विधि का उपयोग करना: -

Mono<String> response = getWebClient(someBaseUrl).post()
                .uri(postUri) //post mapping URI
                .contentType(MediaType.TEXT_HTML)
                .body(Mono.just(payload), String.class) //message to be sent
                .retrieve()
                .bodyToMono(String.class); //type of response to receive

नीचे दी गई सदस्यता Success प्रिंट करने में सक्षम है

response.subscribe(
                value -> log.info("Response from Web service : "+value), 
                error -> log.error("Response from Web Service : "+error.getMessage()) 
                );

सर्विस साइड कंट्रोलर:

@PostMapping("/test")
    public String test(String message) {
        System.out.println("Received message : "+message);
        return "Success";
    }

उपरोक्त कोड null प्रिंट करता है, लेकिन यह कॉलर को प्रतिक्रिया सफलता भेजने में सक्षम है। कृप्या सहायता करे।

0
Deepak 19 फरवरी 2021, 13:37

1 उत्तर

सबसे बढ़िया उत्तर

आपको String message को @RequestBody से एनोटेट करना चाहिए।

उदा.:

@PostMapping("/test")
public String test(@RequestBody String message) {
  System.out.println("Received message : "+message);
  return "Success";
}
1
Domenico Sibilio 19 फरवरी 2021, 13:49
1
त्वरित उत्तर के लिए धन्यवाद, हाँ मैं @RequestBody एनोटेशन जोड़ना भूल गया और यह समस्या का समाधान करता है
 – 
Deepak
19 फरवरी 2021, 13:55