0

パットにスペースがある URLConnection を使用して FTP サーバーからファイルをダウンロードできません

String s = "ftp://username:password@ftpclient:21/AAB BBC/hhhh 0001.jpg";

URL u = 新しい URL; URLConnection uc = u.openConnection(); BufferedOutputStream bos = new BufferedOutputStream(uc.getOutputStream());

FTP クライアント ソリューションは必要ありません。

URLencoder を使用すると 550 エラー ファイルが見つかりません。

ありがとう、ガウラフ

4

2 に答える 2

0

RFC1738セクション2.2に従って、URL自体にスペースを入れないでください。URLエンコードメソッドを実行してエンコードします。

String s = "ftp://username:password@ftpclient:21/AAB BBC/hhhh 0001.jpg";
String encodedUrl = URLEncoder.encode(s,"UTF-8");

すでにエンコードを行っているとのことですが、550エラーが返されました。エンコーディングが表示されなかったので、必要だと言っているだけです。

私は実際にブラウザからこれを試して、あなたがそれに到達できるかどうかを確認します。また、使用しているURLをダンプして、ブラウザー(または、wget、curl、手元にあるものなら何でも)から試してみます。550は「許可」の問題としてリストされており、ファイルが見つかりません。少し驚いていますが、これは短いコードであり、ユーザーやパスワードのテストを妨害するためのエラーとして表示される可能性があります。組み合わせ。言いにくい。

私があなたに持っているもう一つの質問は、あなたがクライアントソリューションを望まないと言っているが、あなたはサーバーではなくクライアントを書いているようだということです。サーバーのデフォルトのFTPポートであるポート21に移動します。

エンコードのさまざまな組み合わせを試して、すべてをエンコードしていないかどうかを確認します...URLパスをエンコードする必要があります。パスワードにファンキーな文字が含まれていますか?

ブラウザから直接テストすると、多くの洞察が得られます。

于 2013-03-19T19:54:17.963 に答える
0

Apache commons Library を使用していますか? もしそうなら、このコードを使用してください

try {
    FileOutputStream desFileStream = new FileOutputStream(desFilePath);;
    status = FTP_object.retrieveFile(srcFilePath, desFileStream);
    desFileStream.close();

    return status;
} catch (Exception e) {
    Log.d(TAG, "download failed");
}
于 2013-03-19T19:03:02.863 に答える