0

Pentaho Data Integration を使用していますが、http 要求の応答ヘッダーを取得する手順が必要です。私が本当に必要としているのは、インターネット上のリソースの最後に変更されたフィールドを確認する必要があるため、http 呼び出しの HEAD メソッドの実装です。REST クライアント ステップを使用してみましたが、うまくいきません。そこで、必要なものすべてを作成するスクリプトを書きたいと思います。私は実際にModified Java Script Valueを作成し、このコードを内部に入れました:

var req = new XMLHttpRequest();
req.open('GET', 'URL', false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();

実行するとエラーは発生しませんが、「ヘッダー」に何かがあります。

助言がありますか?別の解決策をいただければ幸いです

4

3 に答える 3

0

同様の問題がありました。私の場合は、サード パーティのストレージ (Amazon S3 など) を使用するサービスで発生する可能性のあるリダイレクトを検出することでした。初めて XMLHttpRequest を試してみましたが、Kettle で利用できる JavaScript では実装されていないようです。ブラウザだけです。これを回避するには、http://type-exit.org/adventures-with-open-source-bi/2010/06/using-java-in-pentaho-kettle/の指示に従って、前述の別の Java クラスを参照します。http://www.mkyong.com/java/how-to-get-http-response-header-in-java/のModified Javascript Value Step 内。制限は、ヘッダーを取得するためにプライマリ リクエストを実行する必要があることです。これは「たった 1 つのリクエスト」ソリューションではありません。

//Get the location of a link that has a 301 permanent redirection

var pathurl=documentourl; //URL to lookup. It must be a valid address, otherwise will give error
var location; //final location in case of redirect


//fake import of the Java Classes
var HTTPRequest=javax.servlet.http.HttpServletRequest;
var url=java.net.URL;

//open a url connection
var conn= new url(pathurl).openConnection();
//if you yant to watch all the headers uncomment the following lines 
//var headerobj= conn.getHeaderFields();

var status=conn.getResponseCode(); //get status code


if (status == 301){ //ie: permanent redirection
location=conn.getHeaderField("Location");
}
else{
//return the same url
location=pathurl;

}

この問題を抱えている人に役立つことを願っています!

于 2015-05-02T18:07:16.927 に答える
0

しかし、最後にアラートを入れると:

var req = new XMLHttpRequest();
req.open('GET', 'http://dati.toscana.it/it/storage/f/2012-07-26T160139/intoscana-arte-e-cultura.csv', false);
req.send(null);
var headers = req.getAllResponseHeaders().toLowerCase();
alert(headers);

それは私に応答を与えます。これも私に与えます:

エラー: 失敗

req.send(null);

ファイアーバグを使用しています。

于 2013-08-13T21:27:44.030 に答える