当前位置: 首页 > 知识库问答 >
问题:

无法使用Spring Reactive-WebClient将消息作为字符串发送

南宫天逸
2023-03-14

我无法使用Spring-webflux WebClient向rest服务发送字符串消息。下面是代码片段:

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
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";
    }

共有1个答案

双弘益
2023-03-14

您应该使用@RequestBody对字符串消息进行注释。

例如:

@PostMapping("/test")
public String test(@RequestBody String message) {
  System.out.println("Received message : "+message);
  return "Success";
}
 类似资料:
  • 我使用的是Simado GDT11调制解调器和丰富的USB到串行端口驱动程序。新连接出现在我的设备管理器中 我使用的是smslib示例中指定的基本类,但总有一些错误表明设备没有响应。由于使用USB端口,我添加了轮询参数,但没有效果。Commtest实用程序可以连接到同一个端口,所以我认为端口号不是问题。 Stacktrace: 代码:

  • 问题内容: 您如何将此String转换为gson.JsonArray? 这是我的代码: 这是将这个Collections字符串转换为JSonArray的方法吗? 问题答案: 要在JSON数组中包含字符串值,必须记住在Java程序中用反斜杠转义双引号。请参见下面的声明。 您在main()方法中的代码可以正常工作。以下只是对main()方法中的代码的微小修改。 最后,请记住在语句“ com.googl

  • 我将XML作为字符串传递给一个方法,并再次将其转换为XML来完成我的工作。 其正常工作正常,但当出现特殊字符时,如<代码> 我的XML字符串: 我的代码是: 错误: “=”是意外标记。预期标记为“;”。第1行,位置150。 完全错误为: 系统Xml。XmlException未由用户代码处理HResult=-2146232000消息=“=”是意外令牌。预期标记为“;”。第1行,位置150。源=系统。

  • Google::API::ClientError(InvalidArgument:需要收件人地址) 我检查过用ruby gmail api V0.9发送电子邮件,我也发现了这一点,但它使用了类,而我在gmail api ruby客户端库中找不到。当前,包含字符,但我在没有它的情况下对它进行了测试,结果它不起作用。 而且,我还想在邮件中发送附件。

  • 问题内容: 我正在尝试将字符串解析为对象。我在下面的链接中查看了jQueryparseJSON文档, 我也包括了jquery库,所以我知道不是那样的。 到目前为止,这是我的代码 在Firebug中,出现以下错误: 我知道该解决方案很可能非常简单,但是我一直反复忽略它。 问题答案: 示例代码中的测试字符串不是有效的JSON: 现在,如果由于所有服务使该对象作为JSON字符串可用而执行所有操作,则jQ

  • 我阅读了关于用户目的地的Spring文档。我想使用方法仅向特定用户发送消息。 这是java代码: 这是客户端js代码: 首先,考虑用户价值是否正确? StampClient.connect("myuser",... 为什么这个测试不起作用?此用户未收到任何消息。如果我将目的地切换到,并将方法更改为,这将起作用,但显然是作为广播,而不仅仅是根据请求发送给特定用户。 我试图设置一个回复单用户与此代码: