2017-09-28 8 views
0

RITE API呼び出しを作成してNiFi UIポストにテンプレートをインポートしようとしています。以下apacheでテンプレートをアップロードするJavaでRest APIを使用するNiFi

以下

String siteUrl = "localhost"; 
String portNumber = "8080"; 
String pId = "f80896d4-c71f-3395-d527-8c6bd69f44d0"; 
String pathname = "D:\\Users\\bramasam\\Downloads\\BalaBackUp.xml"; 
String restString = "http://" + siteUrl + ":" + portNumber + "/nifi-api/process-groups/" + pId + "/templates/upload"; 
HttpPost httpPost = new HttpPost(restString); 

File fileObj = new File(pathname); 

httpPost.addHeader("Content-type", "multipart/form-data"); 

FileEntity fileEntity = new FileEntity(fileObj, ContentType.MULTIPART_FORM_DATA); 

httpPost.setEntity(fileEntity); 

HttpClient httpClient = HttpClientBuilder.create().build(); 
HttpResponse response = httpClient.execute(httpPost); 
StatusLine status = response.getStatusLine(); 
System.out.println(status.getStatusCode()); 

、私が試した符号である{ID}はI応答を取得しています私は

<?xml version="1.0" ?> 
<template encoding-version="1.1"> 
    <description></description> 
    <groupId>bd5dba8b-015d-1000-1fd5-450ede38b7a5</groupId> 
    <name>BalaBackUp</name> 
    <snippet> 
    <processGroups> 
     <id>f80896d4-c71f-3395-0000-000000000000</id> 
     <parentGroupId>29a5776d-9728-3fee-0000-000000000000</parentGroupId> 
     <position> 
     <x>0.0</x> 
     <y>0.0</y> 
     </position> 
     <comments></comments> 
     <contents> 
     <connections> 
      <id>c0d0e26d-5ee2-3d60-0000-000000000000</id> 
      <parentGroupId>f80896d4-c71f-3395-0000-000000000000</parentGroupId> 
      <backPressureDataSizeThreshold>1 GB</backPressureDataSizeThreshold> 
      <backPressureObjectThreshold>10000</backPressureObjectThreshold> 
      <destination> 
      <groupId>f80896d4-c71f-3395-0000-000000000000</groupId> 
      <id>1f9e926a-71fc-356f-0000-000000000000</id> 
      <type>PROCESSOR</type> 

からインポートしようとしていBalaBackUp.xmlファイルからのものですコード500、以下の応答

HttpResponseProxy{HTTP/1.1 500 Internal Server Error [Date: Thu, 28 Sep 2017 09:43:28 GMT, X-Frame-Options: SAMEORIGIN, Content-Type: text/plain, Transfer-Encoding: chunked, Server: Jetty(9.4.3.v20170317)] ResponseEntityProxy{[Content-Type: text/plain,Chunked: true]}} 

あなたは私が逃しているものについて私を助けてくれますか?

答えて

0

HTTP 500の例外を説明するlogs/nifi-app.logファイルのエラーを調べる必要があります。ブラウザのデベロッパーツールパネルを使用して、Apache NiFi UIからテンプレートをアップロードする際の基本的なネットワークリクエストを調べてください。これは、これをプログラムで実行するのに必要なリクエストと同じです。

コピーされたテンプレートXMLは、有効なテンプレートではないため、不完全であると仮定していますが、現状のままで提供されている場合は間違いなく内部サーバーの例外が発生します。

+0

については、以下のテンプレート

File file = new File(pathname); HttpClient httpclient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(restString); FileBody uploadFilePart = new FileBody(file); MultipartEntity reqEntity = new MultipartEntity(); reqEntity.addPart("template", uploadFilePart); httpPost.setEntity(reqEntity); HttpResponse response = httpclient.execute(httpPost); 

参考URLは私がXMLファイルを検証し、それが完了した(そして、私がいたとしても、あなたはそれを認識するnifiの名前「テンプレート」をaddPartする必要が手動でアップロードすることができます)。また、nifi-app.logを確認しましたが、HTTP 500例外でエラーが見つかりませんでした。 XMLファイルを「multipart/form-data」に構築する方法です。 –

+0

たぶんそれはそうですが、あなたのXMLファイルは24行しか表示せず、開始タグのいずれも閉じません。私に見えるものは有効なXMLではありません。内部NiFiフレームワークまたはプロセッサの実行中にエラーが発生すると、エラースタックトレースがnifi-appログ​​に出力されます。なぜHTTP 500エラーの原因となるエラーが表示されないのかわかりません。 – Andy

+0

コミュニケーションに欠けて申し訳ありません。 {id}フィールドがどこから得られたかを示すXMLサンプルだけを貼り付けました。完全なXMLです。 –

関連する問題