- PR -

レスポンスを取得したい

1
投稿者投稿内容
涼子@都立青山
会議室デビュー日: 2003/07/30
投稿数: 10
投稿日時: 2003-08-15 12:00
Windowアプリケーションでも、Webアプリケーションでも構わないのですが、
ホームページのURLをリクエストして、そのレスポンスを取得したいのです。

例えば、「http://www.atmarkit.co.jp」というURLから、ブラウザが受け取る
はずのレスポンスを取得したいのですが、全然方法が分かりません。
どのようなクラスを使えばよいのでしょう
また、参考になるようなサイトがあったら教えてください。お願いします
Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2003-08-15 12:23
こんにちわ。諸農です。

HttpWebRequestクラスが使えると思います。
他にもSystem.Net名前空間を探せばいろいろと出てくると思います。

ではでは(^^)/
涼子@都立青山
会議室デビュー日: 2003/07/30
投稿数: 10
投稿日時: 2003-08-15 13:01
ありがとうございます。
ちょっと見てみたのですが、MSDNを見てみただけだと難しそうなので
時間がかかりそうなので、とりあえずお礼だけでも、と思いました。
がんばります。
cats
大ベテラン
会議室デビュー日: 2002/11/29
投稿数: 221
お住まい・勤務地: 東京
投稿日時: 2003-08-15 13:04
こんな感じ
コード:
// 方法1
HttpWebRequest wr =
 (HttpWebRequest)WebRequest.Create("http://www.atmarkit.co.jp/");
HttpWebResponse w = (HttpWebResponse)wr.GetResponse();
Stream str = w.GetResponseStream();
StreamReader sr = new StreamReader(str,System.Text.Encoding.Default);
string s = sr.ReadToEnd();
sr.Close();

// 方法2
WebClient w = new WebClient(); 
Byte[] b = w.DownloadData("http://www.atmarkit.co.jp/"); 
string s = (string)System.Text.Encoding.Default.GetString(b);


ちなみに、ノータッチデプロイメントでは、方法1だけ使えます。
涼子@都立青山
会議室デビュー日: 2003/07/30
投稿数: 10
投稿日時: 2003-08-15 15:28
リクエストを行うサーバがLAN内にある時にはきちんとできました。
ありがとうございます。

しかし、「http://www.atmarkit.co.jp」のようなインターネットに対しては
方法1 HttpWebResponse w = (HttpWebResponse)wr.GetResponse();
方法2 Byte[] b = w.DownloadData("http://www.atmarkit.co.jp/");
の行で

「基になる接続が閉じられました : リモート サーバーに接続できません。」
というメッセージがでてエラーになります。

今行っている環境では、IEでは普通にネットは見れるのですがプロキシサーバを通さ
ないと、ネットは見れません。プロキシサーバを設定すればいいかと思い、下を参考に
して、

.NET Framework を使用して、XML Web サービス クライアントからプロキシ サーバーを介して接続できるように構成する方法
http://support.microsoft.com/default.aspx?scid=kb;ja;JP307220

Web参照ができません
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2321&forum=7

machine.configの設定を変えてみたり、自動構成スクリプトを使用するのチェックを
外してみたりしましたが現象は変わりませんでした。

とりあえず、件名については解決致しました、ありがとうございます。
来週、プロキシサーバの事をよく知っている人が来たら聞いて見ます。

#今のここの環境でできるのかできないのか、全然わかりません。
NYRL
ベテラン
会議室デビュー日: 2003/07/14
投稿数: 90
投稿日時: 2003-08-15 16:23
ひょっとしてProxy認証しないと外に出れなくないですか?
私の会社もそうなんですがもとそうなら
PROXYの認証設定をすればいいので

コード:
WebRequest webReq = HttpWebRequest.Create("URL");
webReq.Method = "GET";
// 1秒でタイムアウトさせる。
webReq.Timeout = 1000000;
// IE のプロキシ設定を使用する。
webReq.Proxy = System.Net.WebProxy.GetDefaultProxy();
//認証が必要なとき
webReq.Proxy.Credentials = new System.Net.NetworkCredential("ユーザID","パスワード");
WebResponse webRes = webReq.GetResponse();


このように認証すると外部のページが読めます。

参考としては
緑のバイク ★ フリーソフト公開ホームページ
の中の初めてのC#−>プログラム全般−>Web からダウンロード と
どぼん!のVB道の中の.NET Tipsの
プロキシサーバーを指定してダウンロードする
あたりを参考にしました。
涼子@都立青山
会議室デビュー日: 2003/07/30
投稿数: 10
投稿日時: 2003-08-18 09:38
御回答ありがとうございます。

GetResponseする所で
「基になる接続が閉じられました : リモート サーバーに接続できません。」
のエラーがでてしまいます。

ユーザ名の所を、ドメイン名\\ユーザ名やユーザ名@ドメイン名とかでもやって
みましたが、やはり駄目でした。

ステップ実行してみましたが、Web.Proxyの中身にプロキシサーバのアドレス等
は入っていませんでした。これは、GetDefaultProxyメソッドがきちんと動作し
ていないという事でしょうか?いろいろとIEの設定を変更しながらやってみまし
たが状況は変わりませんでした。
NYRL
ベテラン
会議室デビュー日: 2003/07/14
投稿数: 90
投稿日時: 2003-08-18 15:31
であれば
// IE のプロキシ設定を使用する。
webReq.Proxy = System.Net.WebProxy.GetDefaultProxy();

'プロキシサーバーに"localhost:8080"を指定
Dim proxy As New System.Net.WebProxy("http://localhost:8080")

のようにプロキシサーバーを指定してみたらどうでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)