从一个普通的MVC项目转移到一个被动的项目,并且正在使用Spring Boot(新版本2.0.0.M3)。
在这个特殊的prblem出现之前,我对整个库没有任何问题。
在使用WebClient时,我有一个不起作用的请求。它以前在RestTemplate中工作得很好:
rt.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
headers.add("Authorization", "Basic REDACTED");
HttpEntity<OtherApiRequest> entity =
new HttpEntity<OtherApiRequest>(CrawlRequestBuilder.buildCrawlRequest(req), headers);
ResponseEntity<Void> response = rt.postForEntity("https://other_api/path",
entity,
Void.class);
System.out.println(response.getStatusCode());
client
.post()
.uri("https://other_api/path")
.header("Authorization", "Basic REDACTED")
.contentType(MediaType.APPLICATION_JSON)
.body(Mono.just(req), OtherApiRequest.class)
.exchange()
.then(res -> System.out.println(res.getStatusCode()));
ObjectMapper mapper = new ObjectMapper();
String body = mapper.writeValueAsString(
client
.post()
.uri("https://other_api/path")
.header("Authorization", "Basic REDACTED")
.contentType(MediaType.APPLICATION_JSON)
.body(body, String.class)
.exchange()
.then(res -> System.out.println(res.getStatusCode()));
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class OtherApiRequest {
private String app;
private String urllist;
private int maxDepth;
private int maxUrls;
public OtherApiRequest(String app, String urllist, int maxDepth, int maxUrls) {
this.app = app;
this.urllist = urllist;
this.maxDepth = maxDepth;
this.maxUrls = maxUrls;
}
public String getApp() {
return app;
}
public String getUrllist() {
return urllist;
}
public int getMaxDepth() {
return maxDepth;
}
public int getMaxUrls() {
return maxUrls;
}
public String toString() {
return "OtherApiRequest: {" +
"app: " + app + "," +
"urllist: " + urllist + "," +
"max_depth: " + maxDepth + "," +
"max_urls: " + maxUrls +
"}";
}
}
编辑:
在这里看到更好的答案
用WebClient发送POST请求时缺少内容长度标头(SpringBoot 2.0.2.Release)
$ netcat -l 6500
PUT /value HTTP/1.1
user-agent: ReactorNetty/0.7.5.RELEASE
transfer-encoding: chunked
host: localhost:6500
accept-encoding: gzip
Content-Type: application/json
4
3.16
0
RestTemplate的当前javadoc声明: 注:从5.0开始,非阻塞、反应性组织。springframework。网状物反应性。客户WebClient为RestTemplate提供了一种现代化的替代方案,可以有效支持同步和异步以及流式场景。RestTemplate在未来的版本中将被弃用,并且不会添加主要的新功能。 我们正在使用spring boot 2.0.6和spring 5.0.10编
M3 Distributed TSDB and Query Engine, Prometheus Sidecar, Metrics Aggregator, and more such as Graphite storage and query engine. Table of Contents More Information Community Meetings Office Hours Ins
M3 是 Uber 开源的一个基于分布式时序数据库 M3DB 构建的度量平台,可每秒聚合 5 亿个指标,并且以每秒 2000 万笔的速度持续存储这些结果。 M3 目前拥有超过 66 亿条时序数据,每秒聚合5亿个指标,并在全球范围内每秒持续存储 2000 万个指标(使用 M3DB),批量写入将每个指标持久保存到不同区域的三个副本中。它还允许工程师编写度量策略,以不同的时间长度和不同粒度对资料进行保
我有两个微服务,比如Microservice1使用RestTemplate调用Microservice2。 Microservice2上的处理程序方法如下。 Microservice1中的调用代码如下。 当我将该代码发送到侦听端口8081的Microservice1时,该代码正在工作并按预期返回JSON 但是,如果我使用Postman直接访问带有前面两个GET请求的Microservice 2,结
我使用的是Rest模板,也使用了Web客户端。我得到钥匙作为回应,但身体总是空的。使用Postman,我可以看到响应,这是一个JSON。 我的代码片段在下面- 回应如下- {“结果”:[]} 有人面临同样的问题吗? 在《邮差》中,我能看到的回复头是- 键值 内容编码gzip 内容类型的应用程序/JSON;charset=utf-8 传输编码分块
当从其中一个web服务获取数据时,引号(“)将显示为(?)当我使用Rest模板时。我在chrome上的postman中测试了web服务,并给出了正确的字符。我尝试编码UTF-8,但没有成功。 我检查了以下是从Web服务提供商编码: 高速缓存控制→私有连接→关闭内容编码→gzip内容长度→3407内容类型→text/xml; charset=ISO-8859-1日期→周三,2015 13:35:53