2

UploadValuesCompletedイベントが発生したらNameValueCollection、リクエストでアップロードされたものを取得できますか?

リクエストの複製を再送信できるようにしたい。

私はこのようなことをしています:

NameValueCollection data = new NameValueCollection();
data.Add("myParam", "myValue");

WC.Headers["Content-Type"] = "application/x-www-form-urlencoded";
WC.UploadValuesAsync(Url, "POST", data);
4

2 に答える 2

5

イベント ハンドラーはdata、たとえばクロージャー セマンティクスやインスタンス変数を使用して、データを渡すとアクセスできます。

次のようになります。

WebClient client = new WebClient();
var data = GetPostData();
client.UploadValuesCompleted += (sender, e) => { Console.WriteLine(data); };
UploadValuesAsync("url", "POST", data);

イベント ハンドラが にアクセスできるようになりましたdata

于 2012-12-01T15:15:57.083 に答える
1

これを行うためにWebClient、リクエスト URL と送信された値の両方を提供するように を拡張しました。

class APIRequest : WebClient
{

    public Uri Url { get; private set; }
    public NameValueCollection Data { get; private set; }

    public void sendRequest(Uri url, NameValueCollection data)
    {
        Url = url;
        Data = data;

        Headers["Content-Type"] = "application/x-www-form-urlencoded";
        UploadValuesAsync(url, "POST", data);
    }

}

また、他のコードを変更する必要がありました。以前は多くのリクエストに対して単一の WebClient を使用していましたが、現在はそれぞれに 1 つを使用しています。

于 2012-12-01T14:55:48.397 に答える