相关疑难解决方法(0)

如何使用 Apache Camel 路由从授权服务器获取访问令牌?

我有一个授权服务器 [用@SpringBootApplication、 @RestController、@Configuration和@EnableAuthorizationServeroauth2 安全性注释的简单类] 在端口上运行,8081该服务器工作正常,并在使用方法从 POSTMAN 请求时提供访问令牌POST以及键值对形式的所需参数, http://localhost:8080/oauth/token但是应该如何我在java中实现了camel路由,通过在body中传递参数来获取访问令牌?

java apache-camel

5
推荐指数
1
解决办法
3252
查看次数

骆驼发送多部分/表单数据请求

我有一个应用程序,它发送一个 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)

java apache-camel

3
推荐指数
1
解决办法
6664
查看次数

标签 统计

apache-camel ×2

java ×2