2

私の友人は C# を使用して、Web ページを要求するための簡単なプログラムを作成しています。しかし、指定された Web ページをリクエストしようとすると、問題が発生します。彼はすでにリクエスト内のすべてのヘッダーと Cookie を設定しようとしましたが、それでもタイムアウト例外が発生しました。サンプル Web ページはhttps://my.ooma.comです。

コードは次のとおりです。

string url = "https://my.ooma.com";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Timeout = 30000;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.52 Safari/536.5";
request.Method = "GET";
request.CookieContainer = new CookieContainer();
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.Headers.Add("Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3");
request.Headers.Add("Accept-Encoding:gzip,deflate,sdch");
request.Headers.Add("Accept-Language:en-US,en;q=0.8");
request.KeepAlive = true;                 

WebResponse myResponse = request.GetResponse();
StreamReader sr = new StreamReader(myResponse.GetResponseStream());
string result = sr.ReadToEnd();
sr.Close();
myResponse.Close();

すべてのヘッダーは、Chrome を使用して Web ページを閲覧する場合と同じです。また、Chrome 開発者ツールを使用して設定された Cookie は見当たりませんでした。C# を使用してページを正常にリクエストできる人はいますか? どうもありがとう。

4

1 に答える 1

1

遅刻してすみません。次のコードスニペットは問題なく機能するはずです。また、「getodds.xgi」が含まれているツアーの古いURLを試してみましたが、これも正常に機能しました。サーバーは、Secure Hypertext Transfer Protocol(HTTPS)スキームのみを使用する接続にSecure Sockets Layer(SSL)プロトコルを使用します。

応答を取得することだけを目的とした場合は、UserAgentまたはヘッダーを設定する必要はありません。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;
WebRequest request = WebRequest.Create("http://my.ooma.com/");
string htmlResponse = string.Empty;
using (WebResponse response = request.GetResponse())
{
     using (StreamReader reader = new StreamReader(response.GetResponseStream()))
     {
         htmlResponse = reader.ReadToEnd();
         reader.Close();
     }
     response.Close();
}
于 2012-05-31T03:52:20.823 に答える