Visual C# を使用して GET 要求を行う
この記事では、Visual C# を使用してインターネットから Web ページを取得するように要求する方法 GET
について説明します。
元の製品バージョン: Visual Studio
元の KB 番号: 307023
概要
Microsoft .NET Frameworkには、Web 要求を行う機能など、ネットワークに役立つ多くのクラスが含まれています。
この記事では、次の.NET Framework クラス ライブラリ名前空間について説明します。
System.Net
System.IO
要件
次の一覧では、必要な推奨ハードウェアとソフトウェアの概要を示します。
- Windows
- Visual Studio
注:
プロキシ サーバーの背後にいる場合は、この記事のコードをテストするには、内部 Web アドレスまたは静的プロキシ値 (「 Web ページの要求 」セクションの手順 5 と 6 を参照) が必要です。
Web ページを要求する
Web ページをプログラムで取得する機能には、多くの用途があります。 この機能は、インターネット転送制御または Windows インターネット (WinINet) API に対する直接コーディングを通じて、Visual Basic プログラマに提供されました。
.NET では、名前空間はSystem.Net
、インターネット リソースの要求をカプセル化するクラスとWebResponse
、返されるデータを表すクラスを提供WebRequest
します。
これらのオブジェクトを使用すると、特定の要求に対する応答を表すストリームを取得できます。 ストリームがある場合は、ローカル テキスト ファイルまたは他のソースから読み取るのと同じように応答を読み取ることができます。
要求を行うには、次の GET
手順に従います。
Visual Studio を起動します。
Visual C# で新しいコンソール アプリケーションを作成します。 Visual Studio では、パブリック クラスと空
Main
のメソッドが自動的に作成されます。プロジェクトが 少なくとも を参照していることを確認 System.dll。
コードの後半でこれらの名前空間からの宣言を
System
System.NET
修飾する必要がないように、名前空間、名前空間、およびSystem.IO
名前空間 (ストリーム オブジェクトの場合) に using ディレクティブを使用します。 これらのステートメントは、他の宣言の前に使用する必要があります。using System; using System.Net; using System.IO;
この例では、URL を変数としてハードコーディングします。 実際のシステムでは、この値を関数のパラメーターとして、またはコンソール アプリケーションのコマンド ライン引数として受け取る可能性があります。
string sURL; sURL = "http://www.contoso.com";
新しい
WebRequest
オブジェクトを作成します。 これを行うには、クラスのWebRequest
静的Create
メソッドを使用する必要があります (新しいオブジェクトWebRequest
は無効です)。 の呼び出しCreate
の一部としてターゲット URL を指定して、この値を持つオブジェクトを初期化します。WebRequest wrGETURL; wrGETURL = WebRequest.Create(sURL);
ローカル ネットワークの外部で URL を要求し、プロキシの背後にいる場合は、オブジェクトを
WebProxy
作成し、オブジェクトにこのオブジェクトをWebRequest
指定する必要があります。WebProxy
オブジェクトには、次のサンプル コードでは設定されていないさまざまなプロパティがあり、インターネット エクスプローラーのプロキシ設定で設定できるのと同じ基本情報を指定できます。WebProxy myProxy = new WebProxy("myproxy",80); myProxy.BypassProxyOnLocal = true; wrGETURL.Proxy = myProxy;
インターネット エクスプローラーで既に構成されている設定を使用する場合は、クラスの静的メソッドを
GetDefaultProxy
WebProxy
使用できます。wrGETURL.Proxy = WebProxy.GetDefaultProxy();
注:
Visual Studio 2005 または Visual Studio 2008 では、メソッドは
GetDefaultProxy
機能します。 ただし、このメソッドは非推奨になりました。 .NET Framework 2.0 のGetDefaultProxy
メソッドの詳細については、「.NET Framework V2.0 Obsolete Type/Member List (By Assembly)」を参照してください。ターゲット URL を設定し、該当するプロキシ情報を指定して要求の設定を完了したら、要求を使用して、要求の応答に対応するオブジェクトを取得
Stream
できます。Stream objStream; objStream = wrGETURL.GetResponse().GetResponseStream();
応答ストリームがある場合は、他のストリームと同様にストリームを使用できます。また、ストリームの内容を 1 行ずつ、またはすべてを同時に読み取ることができます。 次のサンプル コード ループは、メソッドが null を返すまでストリームを
ReadLine
一度に 1 行ずつ読み取り、各行をコンソールに出力します。StreamReader objReader = new StreamReader(objStream); string sLine = ""; int i = 0; while (sLine != null) { i++; sLine = objReader.ReadLine(); if (sLine != null) Console.WriteLine("{0}:{1}", i, sLine); } Console.ReadLine();
プログラムを保存して実行します。 環境に合わせてプロキシ情報が正しく構成されていることを確認します (手順 7 と 8 を参照)。 コンソールに番号付けされ、出力された HTML コンテンツの行が表示されます。
完全なコード一覧
using System;
using System.Net;
using System.IO;
namespace MakeAGETRequest_charp
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
static void Main(string[] args)
{
string sURL;
sURL = "http://www.contoso.com";
WebRequest wrGETURL;
wrGETURL = WebRequest.Create(sURL);
WebProxy myProxy = new WebProxy("myproxy", 80);
myProxy.BypassProxyOnLocal = true;
wrGETURL.Proxy = WebProxy.GetDefaultProxy();
Stream objStream;
objStream = wrGETURL.GetResponse().GetResponseStream();
StreamReader objReader = new StreamReader(objStream);
string sLine = "";
int i = 0;
while (sLine != null)
{
i++;
sLine = objReader.ReadLine();
if (sLine != null)
Console.WriteLine("{0}:{1}", i, sLine);
}
Console.ReadLine();
}
}
}
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示