如何在apache驼峰DSL或骆驼处理器内部设置其他认证属性?

在这里,我试图将Json数据转换为CSV格式,最后将此文件发送到Ofbiz服务器api,但是当我在URL中发送参数时,api端点需要一些身份验证内容我得到了下面的输出。如何在apache驼峰DSL或骆驼处理器内部设置其他认证属性?

{ “_ERROR_MESSAGE _”:“错误调用事件:org.apache.ofbiz.webapp.event.EventHandlerException:实测值URL参数[的configId]传递给安全(HTTPS)请求地图URI [uploadAndImportFileFromCSVFile]与事件调用服务[uploadAndImportFile];这是不允许出于安全原因!数据应该通过使其成为请求主体(表单域)而不是请求URL的一部分进行加密,而且如果您可以创建Jira子任务https://issues.apache.org/jira/browse/OFBIZ-2330(如果您不确定如何创建Jira问题,请在https://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Contributors+Best+Practices之前查看,谢谢您的帮助。),“” sessionId“:”someId .jvm1“,”removePathAlias“:false,”loggedIn“:true,”USERNAME“:”__“ ,“_ LOGIN_PASSED _”:“TRUE”,“webSiteId”:“API”}

之后,我使用MultipartBuilder发送请求。

exchange.getIn().setHeader("bearer",token);   

MultipartEntityBuilder builder = MultipartEntityBuilder.create();

File file =new File("//home/r2/Desktop/ofBizFile/orderFile.csv");

builder.addPart("configId",new StringBody("CON_ID"));

builder.addPart("fileTypeEnumId",new StringBody("CSV_FILE"));

builder.addPart("_uploadedFile_contentType",new StringBody("text/csv"));

builder.addPart("uploadedFile",new FileBody(file));

exchange.getIn().setBody(builder.build());

我也试过类似的东西。

exchange.setProperty(Exchange.CHARSET_NAME, "ISO-8859-1"); 

exchange.getIn().setHeader(Exchange.HTTP_QUERY,"USERNAME=abc&PASSWORD=bc69");

exchange.getIn().setBody("configId=CON_ID&fileTypeEnumId=CSV_FILE");

这里是我的骆驼航线

//Route 1 

from("couchdb:http://localhost:5984/order")

.process(new JsonToCsvProcessor())

//Storing file into local directory

.to("file:/home/r2/Desktop/ofBizFile?fileExist=append&fileName=order-${date:now:yyyyMMdd}.csv");

.to("direct:jsonToCsv");

//Route 2

from("direct:jsonToCsv")

.setHeader(Exchange.HTTP_QUERY,constant("USERNAME=__&PASSWORD=__"))

//For get token

.to("https4://SomeAddress.com/centerAPI/getAuthenticationToken")

//Get the token and set required parameter for route 3

.process(new ProcessorGetToken())

.to("direct:hold");

//Route 3

from("direct:hold")

.setHeader(Exchange.HTTP_QUERY,constant("USERNAME=__&PASSWORD=__"))

.to("https4://SomeAddress.com/centerAPI/uploadAndImportFileFromCSVFile?throwExceptionOnFailure=false")

//How I know the file is submited successfuly ?

.to("stream:out").end();

所以问题是我怎么能在Route2到ProcessorGetToken发送数据体内明年路径3?

回答:

我会在这里拍摄一片黑暗。读你的错误消息:

的数据应通过使请求主体(表单域)的一部分进行加密,而不是请求URL

你没有这个集成文档?我认为你需要更多关于这个过程的说明,以及在发送数据之前需要加密哪些数据。

另外,尽量将Exchange.HTTP_METHODPOST设置成你的路线,像这样:

exchange.setProperty(Exchange.CHARSET_NAME, "ISO-8859-1"); 

exchange.getIn().setHeader(Exchange.HTTP_METHOD, "POST");

exchange.getIn().setHeader(Exchange.HTTP_QUERY,"USERNAME=abc&PASSWORD=bc69");

exchange.getIn().setBody("configId=CON_ID&fileTypeEnumId=CSV_FILE");

看看到this unit test看到更多的例子在HTTP发送数据。那里还有很多其他的测试。

以上是 如何在apache驼峰DSL或骆驼处理器内部设置其他认证属性? 的全部内容, 来源链接: utcz.com/qa/262743.html

回到顶部