この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 22743|答える: 0

[出典] HttpListenerでシンプルなHttpサービスを実装します

[リンクをコピー]
掲載地 2015/12/02 16:56:31 | | |
HttpListenerは、シンプルでプログラム可能かつ制御可能なHTTPプロトコルリスナーを提供します。 大規模なサービスプログラム(IIS)を立ち上げることなく、簡単にいくつかのHttpサービスを提供できます。

注:このクラスはWindows XP SP2またはWindows Server 2003のオペレーティングシステムを搭載したコンピュータでのみ利用可能です。

Httpサービスを利用する一般的な手順は以下の通りです。

HTTPリスナーオブジェクトを作成し、初期化します
聞く必要があるURIプレフィックスを追加してください
クライアントからのリクエストを聞き始めましょう
クライアントからのHttpリクエストを処理する
HTTPリスナーをオフにしてください
ステップ3と4は複数の顧客から要望されるサービスを提供するためにサイクル可能です。

HTTPリスナーオブジェクトを作成する

HTTPリスナーオブジェクトを作成するには、新しいHttpListenerオブジェクトを作成するだけで済みます。

HttpListener リスナー = 新しいHttpListener();

初期化には以下の2つのステップが必要です

listener.prefixesで聴くURL範囲は以下の関数を使って追加できます:
リスナー。 プレフィックス。Add(プレフィックス) //プレフィックスは必ず '/' で終わらなければなりません
リスナーに電話をかけてください。 Start() でポートをバインドし、クライアントのニーズを聞き始めます。
HTTPリクエストを受け入れる

.net 2.0では、HttpListenerクラスで使用されるリクエストおよびレスポンスオブジェクトへのアクセスはHttpListenerContextオブジェクトを通じて提供されます。

HttpListenerContextを入手する最も簡単な方法は以下の通りです:

HttpListenerContext context = listener. GetContext();

このメソッドはクライアントリクエストが受信されるまで呼び出し関数をブロックし、応答速度を向上させたい場合は非同期メソッドリスナーを利用できます。 HttpListenerContext() オブジェクトを取得するために BeginGetContext() を行ってください。

HTTPリクエストの処理

HttpListenerContextを取得すると、クライアントのリクエストを表すオブジェクトはRequest属性を通じて、HttpListenerはResponse属性を通じてクライアントに送るレスポンスを表すオブジェクトを取得できます。

HttpListenerRequest request = context. リクエスト;
HttpListenerResponse response = コンテキスト。 応答;

ここでのHttpListenerRequestオブジェクトは、AspやHttpListenerResponseオブジェクトのRequest and Responseの使い方に似ているため、ここではあまり詳しくは言いません。具体的な用途については下の例をご覧ください。

HTTPリスナーをオフにしてください

リスナーに電話をかけることで。 リスナーをオフにし、関連するリソースを解放するためのStop()関数

コード例:

Systemを使い、
System.Collections.Genericを使い、
System.Textを使い、

System.Net を用いています。

名前空間 ConsoleApplication1
{
    クラスプログラム
    {
        static void Main(string[] args)
        {
            HttpListener リスナー = 新しいHttpListener();
            リスナー。 プレフィックス。Add("http://localhost/"); 聞くべきURLの範囲を追加してください
            リスナー。 Start(); ポートを傍受し、クライアントリクエストを受け取ってください
            Console.WriteLine(「聞く...」);

            クライアントのリクエストが届くまでメイン機能をブロックします
            HttpListenerContext context = listener. GetContext();
            HttpListenerRequest request = context. リクエスト;
            HttpListenerResponse response = コンテキスト。 応答;

            文字列応答文字列 = 文字列。 フォーマット(「<HTML><BODY>{0}</BODY></HTML>」、DateTime.Now);
            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
            対応する情報をクライアントに出力します。
            応答。 ContentLength64 = バッファ。 長さ;
            System.IO.Stream 出力=応答。 OutputStream;
            出力。 Write(buffer, 0, buffer. 長さ);
            出力ストリームを閉じて対応するリソースを解放します
            出力。 Close();

            リスナー。 Stop(); HttpListenerをオフにしてください
        }
    }
}

このプログラムは比較的シンプルで、まず「http://localhost/time/」ドメインのサービスを実装するためのHTTPリスナーを作成し、リモートリクエストを受け取ると現在の時刻をクライアントへの文字列出力に変換し、リスナーを閉じます。





先の:AJAXによるMVCまたはWebAPIサービスへのクロスドメイン呼び出しの問題点と解決策 ASP.NET
次に:2015年12月3日、ウェブサイトは正式に「Code Farmer Network」と改名され、ここに通知いたします!
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com