我正在使用Spring WebClient和Spring Boot 2.3.5.Release向需要application/x-www-form-urlencoded内容类型的站点发布请求。它总是失败,因为没有设置Content-Length头。我可以在代码中设置,但我不确定当内容类型为application/x-www-form-urlencoded时如何计算内容长度。我正在访问的URL是一个遗留网站。我看到这篇文章缺少用WebClient(SpringBoot2.0.2.release)发送post请求的内容长度头,但它没有解决content-type=application/x-www-form-urlencoded的问题。
我在邮递员中执行了同样的请求,它工作得很好。在Postman中,如果删除Content-Length头,我将得到与代码中相同的错误。
请告知如何计算内容长度。谢谢你。
下面是一个片段。
final MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
formData.add("key 1, "value 1");
formData.add("key 2, "value 2");
formData.add("key 3, "value 3");
formData.add("key 4, "value 4");
ResponseEntity<String> resp = webClient
.post()
.uri("https://myurl")
.contentType(MediaType.APPLICATION_FORM_URLENCODED)
.header(HttpHeaders.CONTENT_LENGTH,
String.valueOf(???))
.body(BodyInserters.fromFormData(formData))
.exchange()
.flatMap(response -> response.toEntity(String.class))
.block();
我有个解决办法。结果表明,这与内容长度无关。我决定尝试使用RESTTemplate访问相同的RESTendpoint。我得到了一个相同的错误,目标endpoint抱怨缺少参数。然而,当我用邮递员或卷曲访问它时,它工作得非常好。
我没有将bodyinserters.fromformdata
与MultiValueMap一起使用,而是使用了bodyinserters.fromvalue(bodyData)
。对于主体数据,我构建了一个与curl使用的值类似的字符串。
grant_type=client_credentials&client_id=123&client_secret=456&scope=myscope
这个问题可能仅限于服务该API的主机(不是公共API),但我发现有趣的是,RestTemplate和WebClient在使用x-www-form-urlencoded
的标准方法时都失败了,而Postman和curl工作得很好。
我试图访问这个REST API,它接受三个参数:,,我在AngularJS中这样做: 但我总是这样: 对象{data:“{”result:“false”},状态:200,配置:Object,状态文本:“OK”,标题:function} 或者 {"data":"{\"结果\":\"false\"}","状态": 200,"配置":{"方法":"POST","transformRequest":[nu
我正在尝试使用,但数据没有到达PHP。我认为这是因为当使用标题始终设置为
我以前有ElasticSearch 5.2,刚刚升级到6.0。 我试图创建一个索引模板以下指南在这里,但得到了错误 我的问题是
我希望在客户端下载文件时向他们显示文件的大小。< br >但是HTTP头内容长度不起作用。< br >我环境如下。 阿帕奇 2.2 mod_deflate 轨道3.2 下载文件位于rails项目公用文件夹中。 当我下载它时,响应标头是这个。 接受范围字节 访问控制允许头...源,x 请求,内容类型 访问控制允许甲基...放置、获取、发布、删除、选项 访问控制-允许-原始...http://*.co
我的要求很简单。 响应是xml格式的。 我尝试了很多地方的例子,但似乎没有任何效果。它返回401 Unauthorized,如果请求的格式不正确,目标API就会抛出这个错误。
问题内容: 我曾经有ElasticSearch 5.2,并且刚升级到6.0。 我正在尝试按照此处的指南创建索引模板,但出现错误 我的查询是 问题答案: 要解决此问题,请添加curl选项 这个错误是由于 严格的内容类型检查 在ElasticSearch 6.0中引入,在解释这个岗位 从Elasticsearch 6.0开始,所有包含主体的REST请求也必须提供该主体的正确内容类型。