Contenty类型的边界被FormHttpMessageConverter覆盖

我在Spring

Framework中使用FormHttpMessageConverter。为了通过restTemplate发送文件,我在项目中添加了FormHttpMessageConverter。

问题是服务器在哪里将文件询问的字符串加密为我的Content-type。我必须发送Content-type:multipart / form-

data的文件,但他们询问“ Content-type:multipart / form-data;”。和 。

因此,我尝试在发送文件之前为边界值。但是,当RestTemplate.exchage()时,边界值被覆盖,原因是FormHttpMessageConverter。FormHttpMessageConverter捕获了转换请求。如果Content-

type为multipart / form-data,则FormHttpMessageConverter将此代码覆盖边界值。

https://github.com/spring-projects/spring-

framework/blob/5f4d1a4628513ab34098fa3f92ba03aa20fc4204/spring-

web/src/main/java/org/springframework/http/converter/FormHttpMessageConverter.java#L336

我找不到避免该问题的方法,因此我在链接处复制了该代码,并制作了一个文件“ xxxFormHttpMessageConverter”,并修改了“

writeMultipart”方法。

有人知道如何避免这种覆盖吗?

回答:

在Spring启动中,您可以通过创建新的HttpMessageConverter bean来自定义边界。Spring Boot将自动替换旧的靴子。代码如下:

@Configuration

public class CustomerHttpMessageConverter {

public static final String MY_BOUNDARY = "XXXXXXXX";

@Bean

public HttpMessageConverter<MultiValueMap<String, ?>> createCustomerFormHttpMessageConverter() {

return new CustomerFormHttpMessageConverter();

}

static class CustomerFormHttpMessageConverter extends FormHttpMessageConverter {

@Override

protected byte[] generateMultipartBoundary() {

return MY_BOUNDARY.getBytes(Charset.forName("UTF-8"));

}

}

}

您可以在此处找到更多信息。

以上是 Contenty类型的边界被FormHttpMessageConverter覆盖 的全部内容, 来源链接: utcz.com/qa/404675.html

回到顶部