セキュリティで保護された Web の場所からアプリのメモリにファイルを取得する必要があります。キャプチャするファイルの URL がありますが、セキュリティの問題を解決できないようです。クックブック サンプル ページのコードは次のとおりです。
def download(address)
{
def file = new FileOutputStream(address.tokenize("/")[-1])
def out = new BufferedOutputStream(file)
out << new URL(address).openStream()
out.close()
}
ファイルの内容のバイト配列を返す必要がある同じ関数の「メモリ」バージョンを次に示します。
def downloadIntoMem(address)
{ // btw, how frickin powerful is Groovy to do this in 3 lines (or less)
def out = new ByteArrayOutputStream()
out << new URL(address).openStream()
out.toByteArray()
}
保護されていない URL (ネット上で見つけられる任意の画像ファイルを選択) に対してこれを試してみると、問題なく動作します。ただし、ユーザー/パスワードが必要な URL を選択すると、うまくいきません。
わかりました、これについてもう少し作業を行いました。Authenticator メソッドは機能しているように見えますが、回りくどい方法です。URL に初めてアクセスすると、ログイン サーバーの場所を含む 302 応答が返されます。オーセンティケーターを設定してその場所にアクセスすると、別の 302 が返され、Cookie と場所が元の URL に設定されます。その後、オリジナルにアクセスすると、ダウンロードは正しく行われます。
そのため、ブラウザを少し模倣する必要がありますが、最終的にはすべて機能します。
これをコミュニティ wiki にして、他の人が他の方法を追加できるようにします。
ありがとう!