0

リクエストの取得と投稿に WebClient を使用しています。次のようなデータに http リクエストを送信するとGET:

WebClient client = new WebClient();  
client.DownloadStringAsync(new Uri(requestUri), "GET"); 

合計1分までのデータを受信できます。一部のデータは 20 秒で受信でき、別のデータは 30 秒で 1 分後に受信できます。データを受け取るたびに知りたいです。Web クライアントで受信したデータのバイトを取得するイベントはありますか?

4

1 に答える 1

0

WebClient.DownloadProgressChangedいずれかの非同期メソッドがデータを受信するたびに、イベントが発生します。ただし、どのデータが読み取られたかを正確に判断する方法はないため、これで問題が解決するとは思えません。

リクエストを完全に制御する必要がある場合は、放棄WebClientして下位レベルのWebRequestクラスを直接操作する必要があります。具体的には、WebRequestを取得してそれWebResponseを呼び出すために、 を送信GetResponseStreamします。返されたストリームは、必要なことを何でもできる非同期機能を公開します。欠点はもちろん、すべてを手動で調整する必要があることです。これには 2 行以上のコードが必要になります。

これを行う方法の例が、MSDN ドキュメントのWebRequest.BeginGetResponse.

于 2013-02-18T12:30:09.607 に答える