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

如何使用spring boot web客户端发布内容类型应用程序的表单数据请求/x-www-Form-urlencoded

南宫阳冰
2023-03-14

如何使用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发送相同的请求?

共有2个答案

郭弘盛
2023-03-14

另一种形式:

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保证更容易使用。

詹弘毅
2023-03-14

为此,我们可以使用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。