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

如何使用Spring Cloud Faign发布表单url编码数据

吴宝
2023-03-14

使用sping-mvc注释:

  • 我如何定义一个@FeignClient,它可以发布表单url编码

共有3个答案

司寇瑾瑜
2023-03-14

对于POST中的url表单编码数据,必须在外文编码器中使用FormEncoder

包括对应用程序的依赖关系:

梅文:

<dependency>
  <groupId>io.github.openfeign.form</groupId>
  <artifactId>feign-form</artifactId>
  <version>3.8.0</version>
</dependency>

将FormEncoder添加到你的伪装中。像这样的建筑商:

SomeFeign sample  = Feign.builder()
                      .encoder(new FormEncoder(new JacksonEncoder()))
                      .target(SomeFeign.class, "http://sample.test.org");

在虚拟界面中

@RequestLine("POST /submit/form")
@Headers("Content-Type: application/x-www-form-urlencoded")
void from (@Param("field1") String field1, @Param("field2") String field2);

参考更多信息:https://github.com/OpenFeign/feign-form

黄元章
2023-03-14

完整的Java代码和简化版的kazuar解决方案,适用于Spring Boot:

import java.util.Map;
import feign.codec.Encoder;
import feign.form.spring.SpringFormEncoder;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.support.SpringEncoder;
import org.springframework.context.annotation.Bean;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import static org.springframework.http.MediaType.APPLICATION_FORM_URLENCODED_VALUE;

@FeignClient(name = "srv", url = "http://s.com")
public interface Client {

    @PostMapping(value = "/form", consumes = APPLICATION_FORM_URLENCODED_VALUE)
    void login(@RequestBody Map<String, ?> form);

    class Configuration {
        @Bean
        Encoder feignFormEncoder(ObjectFactory<HttpMessageConverters> converters) {
            return new SpringFormEncoder(new SpringEncoder(converters));
        }
    }
}

依赖:

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
扈德容
2023-03-14

使用FormEncoder进行伪装:

  • https://github.com/OpenFeign/feign-form

你的假象可以是这样的:

class CoreFeignConfiguration {
  @Autowired
  private ObjectFactory<HttpMessageConverters> messageConverters

  @Bean
  @Primary
  @Scope(SCOPE_PROTOTYPE)
  Encoder feignFormEncoder() {
      new FormEncoder(new SpringEncoder(this.messageConverters))
  }
}

然后,客户机可以这样映射:

@FeignClient(name = 'client', url = 'localhost:9080', path ='/rest',
    configuration = CoreFeignConfiguration)
interface CoreClient {
    @RequestMapping(value = '/business', method = POST, 
                 consumes = MediaType.APPLICATION_FORM_URLENCODED)
    @Headers('Content-Type: application/x-www-form-urlencoded')
    void activate(Map<String, ?> formParams)
}
 类似资料:
  • 问题内容: 使用spring-mvc批注,如何定义可以以POST形式URL编码的@FeignClient? 问题答案: 将表单编码器用于伪装:https : //github.com/OpenFeign/feign-form,伪装配置如下所示: 然后,可以像这样映射客户端:

  • 问题内容: 我想将以下(工作)curl代码段转换为RestTemplate调用: 如何正确传递email参数?以下代码导致404 Not Found响应: 我试图在PostMan中制定正确的调用,并且可以通过在主体中将email参数指定为“ form- data”参数来使其正常工作。在RestTemplate中实现此功能的正确方法是什么? 问题答案: POST方法应沿着HTTP请求对象发送。并且该

  • 响应:{“httpCode”:“400”,“httpMessage”:“请求错误”,“moreInformation”:“API请求中缺少一个或多个必需的API参数。”} 从日志中,我可以看到所有参数的传递方式如下:grant\u type=client\u credentials

  • 问题内容: 我的代码: 我试图使用提取API发布表单,它发送的正文如下: (我不知道为什么每次发送时边界数字都会更改…) 我希望它使用“ Content-Type”:“ application / x-www-form- urlencoded”发送数据,我该怎么办?或者,如果我只需要处理它,如何在控制器中解码数据? 向谁回答我的问题,我知道我可以做到: 我想要的是类似jQuery中的$(“#for

  • 我想将以下(工作的)curl片段转换为RestTemplate调用: 如何正确传递email参数?以下代码将导致404 Not Found响应: 我尝试在PostMan中制定正确的调用,通过在正文中将email参数指定为“form-data”参数,可以使其正常工作。在RESTTemplate中实现此功能的正确方法是什么?

  • 根据Facebook在用户照片边缘上的图形文档,可以使用多部分/表单数据编码的二进制图像从javascript发布照片。https://developers.facebook.com/docs/graph-api/reference/v2.2/user/photos 问题是网络上似乎没有任何关于这项工作的示例文档。有一种方法可以绕过FB。api并通过xhr请求直接发布到边缘。我已经做到了,但我真的