質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

3367閲覧

FTPサーバー上のファイル一覧取得で、HTML文が返ってくる

ohno1011

総合スコア14

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2021/06/01 00:53

編集2021/06/01 01:13

お世話になります。

FTPサーバー上のファイルをダウンロードする処理を作っており、
まずFTPサーバー上のファイル一覧を取得したいと思います。

C#

1Uri u = new Uri("ftp://example0.co.jp/"); 2 3System.Net.FtpWebRequest ftpReq = (System.Net.FtpWebRequest) 4 System.Net.WebRequest.Create(u); 5ftpReq.Credentials = new System.Net.NetworkCredential("username", "password"); 6ftpReq.Method = System.Net.WebRequestMethods.Ftp.ListDirectory; 7ftpReq.KeepAlive = false; 8ftpReq.UsePassive = false; 9 10System.Net.FtpWebResponse ftpRes = 11 (System.Net.FtpWebResponse)ftpReq.GetResponse(); 12System.IO.StreamReader sr = 13 new System.IO.StreamReader(ftpRes.GetResponseStream()); 14string res = sr.ReadToEnd(); --15Console.WriteLine(res); 16sr.Close(); 17 18Console.WriteLine("{0}: {1}", ftpRes.StatusCode, ftpRes.StatusDescription); 19ftpRes.Close();

というソースを記述し実行すると、

★のresに取得される値がファイル名ではなく、
指定したUriディレクトリの中身を表したHTML文になっています。

色々とFTPサーバーからのダウンロードについて参考になるサイトを探しましたが、これと同様なソースは記載されていますが
取得される値については特に情報が見つかりませんでした。

ファイル名のみを取得するにはどうしたらよいかご教授お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/06/01 01:04

そのURLに直にアクセスするとどうなるのでしょうか。 あと、それっぽく考えたドメインより例示ドメインのほうが良いです。 案外実在しますから。
ohno1011

2021/06/01 10:03 編集

エクスプローラーにURLを入力するとアクセスでき、中の階層を確認、操作することができます。 IEでURLを入力すると、 「The requested URL ftp://example.com/ retrieved failed   Command sent:    PASS hoge@example.com   Reply get: User cannot log in, home directory inaccessible. 」 と表示されます。 表示されていたhoge@example.comのアドレス、ドメインについて調べたら、 導入しているWebセキュリティソフト関連のものということがわかり、FTP接続時のエラーについて調べたら 「ftp://example.com/」 にユーザー名とパスワードを足して 「ftp://ユーザー名:パスワード@example.com/」 と入力したら、IEからも接続できました。
ohno1011

2021/06/01 02:27

FtpWebRequest のProxyプロパティの設定 ftpReq.Proxy = null; のコードを追記することで解決しました。 ファイル削除処理もこのコードが抜けていると、 「要求された FTP コマンドは、HTTP プロキシを使用しているときにはサポートされません。」 というエラーが出ており、追記することで正常にできました。 m.ts10806さん、 SurferOnWwwさん ご回答ありがとうございました。
ohno1011

2021/06/01 02:32

SurferOnWwwさんのリンクから解決に繋がりましたので SurferOnWwwさんをベストアンサーにさせて頂きたいと思います。 ベストアンサーを付けて解決済みとしたいので回答をお願いします。
退会済みユーザー

退会済みユーザー

2021/06/01 03:15

お手数ですが、ご自分で回答欄にどのように解決し方を書いて、それにマークを付けて解決済みにしていただくようお願いします。
ohno1011

2021/06/01 04:37

ありがとうございました。 今後とも宜しくお願い致します。
m.ts10806

2021/06/01 04:41

ドメインの調整はお願いします。 現時点では存在しないようですが、今後取得されないとも限りませんし、持ち主に迷惑をかけることになります。
guest

回答1

0

自己解決

ftpReq.Proxy = null;

FtpWebRequest Proxy プロパティにnullを設定し、
IEのプロキシ設定を使わないようにすることで解決しました。

投稿2021/06/01 04:36

ohno1011

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問