ここではJsonデータをCSV形式に変換しようとしていますが、最終的にこのファイルをOfbizサーバapiに送信しようとしていますが、URLにパラメータを送信するときにAPIのエンドポイントに認証情報が必要です。apache camel DSLまたはラクダプロセッサ内で追加の認証プロパティを設定するにはどうすればよいですか?
{ "_ERROR_MESSAGE _": "エラー呼び出しイベント:org.apache.ofbiz.webapp.event.EventHandlerException:実測URLパラメータは[ConfigIDの]イベントにURI [uploadAndImportFileFromCSVFile]で(HTTPS)要求マップを確保するために渡されますこれはサービス[uploadAndImportFile]を呼び出します;これはセキュリティ上の理由から許可されていません!リクエストURLではなくリクエスト本文(フォームフィールド)にデータを暗号化する必要があります。 https://issues.apache.org/jira/browse/OFBIZ-2330のサブタスク(このエラーのサブタスクが存在しない場合は前にチェックしてください)あなたがJiraの問題を作成する方法がわからない場合は、先にhttps://cwiki.apache.org/confluence/display/OFBIZ/OFBiz+Contributors+Best+Practicesをご覧ください。セッションID: "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();
あるので、問題は、私は次のRoute3ためRoute2 ProcessorGetTokenで体内のデータを送信することができますどのようにでしょうか?