0
public class MyWebRequest
{
    private WebRequest request;
    private Stream dataStream;

    private string status;

    public String Status
    {
        get
        {
            return status;
        }
        set
        {
            status = value;
        }
    }

    public MyWebRequest(string url)
    {
        // Create a request using a URL that can receive a post.

        request = WebRequest.Create(url);
    }

    public MyWebRequest(string url, string method)
        : this(url)
    {
        if (method.Equals("GET") || method.Equals("POST"))
        {
            // Set the Method property of the request to POST.
            request.Method = method;
        }
        else
        {
            throw new Exception("Invalid Method Type");
        }
    }

    public MyWebRequest(string url, string method, string data)
        : this(url, method)
    {
        // Create POST data and convert it to a byte array.
        string postData = data;
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);

        // Set the ContentType property of the WebRequest.
        request.ContentType = "application/x-www-form-urlencoded";

        // Set the ContentLength property of the WebRequest.
        request.ContentLength = byteArray.Length;

        // Get the request stream.
        dataStream = request.GetRequestStream();

        // Write the data to the request stream.
        dataStream.Write(byteArray, 0, byteArray.Length);

        // Close the Stream object.
        dataStream.Close();
    }

    public string GetResponse()
    {
        // Get the original response.
        WebResponse response = request.GetResponse();

        this.Status = ((HttpWebResponse)response).StatusDescription;

        // Get the stream containing all content returned by the requested server.
        dataStream = response.GetResponseStream();

        // Open the stream using a StreamReader for easy access.
        StreamReader reader = new StreamReader(dataStream);

        // Read the content fully up to the end.
        string responseFromServer = reader.ReadToEnd();

        // Clean up the streams.
        reader.Close();
        dataStream.Close();
        response.Close();

        return responseFromServer;
    }
}

私はこのコードを見て、それを分析していました。WebRequestでクラスを検索して理解しましたが、リクエストを実行するmsdnために a を使用する必要がある理由がわかりません。Streamストリームとは何か、なぜ必要なのかわかりません。誰か助けてくれませんか?また、誰か次の 2 行について説明してもらえますか?

            // Get the request stream.
            dataStream = request.GetRequestStream();

            // Write the data to the request stream.
            dataStream.Write(byteArray, 0, byteArray.Length);

WebRequestストリームがデータを取得し、オブジェクトではなくストリームにデータを書き込みますか?

ありがとう。

4

3 に答える 3

1

GetRequestStreamは、インターネットリソースへのデータ送信を開始するために使用されます。また、インターネットリソースにデータを送信するためのストリームインスタンスを返すために使用されていました。

于 2013-01-20T18:21:35.067 に答える
1

HTTPサーバーと通信するには、HTTPリクエストを作成する必要があります()。これで、実際にそのリクエストを一連のバイトとしてStreamを介して送信します。ストリームは実際には単なる一連のバイトです。

ほとんどのI/O操作(ファイルまたはネットワークソケットを含む)はバッファリングされます。つまり、バイトをバッファに繰り返し入れ、そのバッファが十分にいっぱいになると、実際に送信されます。ストリームは実際にはそのための単なる抽象化です。したがって、実際には、これらの2行でネッ​​トワークを介してバイトを送信しているだけです。

于 2013-01-20T18:27:46.883 に答える
0

MSDNから「バイトシーケンスの一般的なビューを提供します」。I Streamは、データの読み取りまたは書き込みが必要になる可能性のあるさまざまなオブジェクトを抽象化したものです。具体的な例はFileStream、ディスクの読み取りと書き込み、およびMemoryStreamです。Streamから継承する他のタイプを見てください

強調表示する2行は、でデータを送信する方法ですWebRequest。HTTPリクエストを想像してみてください。リクエストを行うと、一部のデータがサーバーに送信されます。を使用しているWebRequest場合は、リクエストストリームを取得してバイトを書き込むことにより、このデータを書き込みます。

于 2013-01-20T18:28:23.623 に答える