WSO2 API Manager中介可能会破坏我们的多部分请求吗?

时间:2016-09-21 13:43:13

标签: spring wso2 wso2-am

我们目前正在使用WSO2 Api Manager(1.9.0)来访问新开发的API,但这会给出一些奇怪的Spring Boot异常。该请求包含文件上载,并作为multipart / form-data请求发送。事情的WSO2应用中介来设置一些自定义HTTP头。

org.springframework.web.multipart.MultipartException: Current request is not a multipart request
        at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue(RequestParamMethodArgumentResolver.java:188) ~[spring-web-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
        at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:104) ~[spring-web-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
        at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121) ~[spring-web-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
        at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:161) ~[spring-web-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128) ~[spring-web-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:114) ~[spring-webmvc-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) ~[spring-webmvc-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) ~[spring-webmvc-4.3.2.RELEASE.jar!/:4.3.2.RELEASE]

有没有办法在不弄乱我们的多部分请求的情况下使用调解?

1 个答案:

答案 0 :(得分:0)

似乎WSO2的API管理器的默认行为不是在调解期间保留请求的Content-Type和Content-Length标头。但是,您可以通过编辑passthru-http.properties文件告诉它保持这些HTTP标头的完整性。您可以在repository / conf目录中的WSO2 AM安装文件夹中找到它。

只需添加以下行:

http.headers.preserve=Content-Length,Content-Type

答案实际上基于this post