如何使用spring bootwebclient
发布内容类型为application/x-www-form-urlencoded的请求
示例curl请求,内容类型为'application/x-www-form-urlencoded'
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'username=XXXX' \
--data-urlencode 'password=XXXX'
如何使用webclient发送相同的请求?
另一种形式:
MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
formData.add("username", "XXXX");
formData.add("password", "XXXX");
String response = WebClient.create()
.post()
.uri("URL")
.contentType(MediaType.APPLICATION_FORM_URLENCODED)
.body(BodyInserters.fromFormData(formData))
.exchange()
.block()
.bodyToMono(String.class)
.block();
在我的愚见中,对于简单的请求,REST保证更容易使用。
为此,我们可以使用BodyInserters.fromFormData
webClient client = WebClient.builder()
.baseUrl("SOME-BASE-URL")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_FORM_URLENCODED_VALUE)
.build();
return client.post()
.uri("SOME-URI)
.body(BodyInserters.fromFormData("username", "SOME-USERNAME")
.with("password", "SONE-PASSWORD"))
.retrieve()
.bodyToFlux(SomeClass.class)
.onErrorMap(e -> new MyException("messahe",e))
.blockLast();
我有一个api要求在标题中发送以下参数- 内容类型-应用程序/x-www. form-urlencoded AuthKey-(会话令牌) 以及正文中的以下参数(表单日,即键值对) storeId-1 类型-产品 类别ID-324 但是每当我点击这个api,我总是得到401(未授权)错误。我已经尝试使用MultipartRequest正文和formBody,我知道这与正文无关(它的头,我需要发送内容
我试图访问这个REST API,它接受三个参数:,,我在AngularJS中这样做: 但我总是这样: 对象{data:“{”result:“false”},状态:200,配置:Object,状态文本:“OK”,标题:function} 或者 {"data":"{\"结果\":\"false\"}","状态": 200,"配置":{"方法":"POST","transformRequest":[nu
我的要求很简单。 响应是xml格式的。 我尝试了很多地方的例子,但似乎没有任何效果。它返回401 Unauthorized,如果请求的格式不正确,目标API就会抛出这个错误。
这是我第一次决定用完整的Java代码配置编写基于Spring Boot和Spring Security性的应用程序,我遇到了无法超越的奇怪问题。我正在尝试用Postman测试API,我的请求只有在使用内容类型为application/x-www-form-urlencoded时才被接受。下面我粘贴我的所有当前配置。 如果我想登录,我只能使用提到的内容类型。对于应用程序/json,我得到403响应状
在java中,如何使用。我不明白如何发送带有键值的正文,如上面的屏幕截图所示。 我尝试过以下代码: 但是在回复中,我没有收到正确的数据。
我正在尝试为我的网站创建一个简单的登录功能。我使用JAVA作为后端,并尝试使用restservices。我的学校给了我一个带有身份验证的登录系统的例子。不幸的是,我遇到了这个错误:java。lang.IllegalStateException:当请求实体的内容类型不是application/x-www-form-urlencoded]时,使用@FormParam。