我有一个授权服务器 [用@SpringBootApplication、
@RestController、@Configuration和@EnableAuthorizationServeroauth2 安全性注释的简单类] 在端口上运行,8081该服务器工作正常,并在使用方法从 POSTMAN 请求时提供访问令牌POST以及键值对形式的所需参数,
http://localhost:8080/oauth/token但是应该如何我在java中实现了camel路由,通过在body中传递参数来获取访问令牌?
我有一个应用程序,它发送一个 multipart/form-data 和一个接收 multipart/form-data 请求的应用程序。
在接收器中处理:
InputStreamCache postBody = exchange.getIn().getBody(InputStreamCache.class);
MultipartUploadContext mux = new MultipartUploadContext(postBody, exchange.getIn().getHeader("Content-Type",String.class));
Map<String,Object> params = mux.parseRequest();
Run Code Online (Sandbox Code Playgroud)
解析请求,从 Postman/Swagger 发送工作正常。我在将骆驼发送器与骆驼接收器集成在一起时遇到了麻烦。
这是发件人路线:
from("direct:uploadFileToRest").routeId("uploadFileToRest").
process("uploadFileRequestProcessor").
setHeader(Exchange.HTTP_METHOD, simple("POST")).
setHeader(Exchange.CONTENT_TYPE, constant("multipart/form-data")).
to("myrecieverapp/full_upload").
id("fileUploadRestSending").
log(LoggingLevel.DEBUG, "RESPONSE BODY ${body}").
end();
Run Code Online (Sandbox Code Playgroud)
发件人处理器:
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder
.create()
.addTextBody("name", "SomeName")
.addBinaryBody("content", array_with_byte_content_here);
exchange.getOut().setBody(multipartEntityBuilder.build());
Run Code Online (Sandbox Code Playgroud)
出现以下错误:
No body available of type: java.io.InputStream but has value: org.apache.http.entity.mime.MultipartFormEntity@35315261 of type: org.apache.http.entity.mime.MultipartFormEntity on: Message[ID-VRN26-1529401997491-0-3]. Caused by: No type converter available to convert from type: org.apache.http.entity.mime.MultipartFormEntity to the required type: java.io.InputStream …Run Code Online (Sandbox Code Playgroud)