SLアプリケーションでRxを使用したいと思います。私は私のウェブサーバーへのREST要求に観測可能なものを設定したいと思っています。私はObservable.FromEventまたはObservable.FromAsyncをワイヤリングする方法を見ていません。私の最高の推測では、Webclientの完了がイベントを発生させ、Observable.FromEventを実行することです。そこには良い方法がありますか?Silverlight WebclientでRx Observableを実行する方法
答えて
これは、RxでWebリクエストを行うための最良の方法です。
public IObservable<WebResponse> MakeWebRequest(
Uri uri,
Dictionary<string, string> headers = null,
string content = null,
int retries = 3,
TimeSpan? timeout = null)
{
var request = Observable.Defer(() =>
{
var hwr = WebRequest.Create(uri);
if (headers != null)
{
headers.ForEach(x => hwr.Headers[x.Key] = x.Value);
}
if (content == null)
{
return Observable.FromAsyncPattern<WebResponse>(hwr.BeginGetResponse, hwr.EndGetResponse)();
}
var buf = Encoding.UTF8.GetBytes(content);
return Observable.FromAsyncPattern<Stream>(hwr.BeginGetRequestStream, hwr.EndGetRequestStream)()
.SelectMany(x => Observable.FromAsyncPattern<byte[], int, int>(x.BeginWrite, x.EndWrite)(buf, 0, buf.Length))
.SelectMany(_ => Observable.FromAsyncPattern<WebResponse>(hwr.BeginGetResponse, hwr.EndGetResponse)());
});
return request.Timeout(timeout ?? TimeSpan.FromSeconds(15)).Retry(retries);
}
は、ここでそれを使用する方法は次のとおりです。
MakeWebRequest(new Uri("http://www.google.com"))
.Subscribe(
x => Console.WriteLine("Response is {0}", x),
ex => Console.WriteLine("Someone Set Us Up The Bomb: {0}", ex.Message));
ザッツを吸収するためにいくつかの時間を取るつもり! – pm100
実装について心配する必要はなく、Webリクエストを作成するために情報を渡していることを知っていれば、最終的に1つのアイテム(応答)を返すIObservable
エラー処理を含む使用例コードも含めることができますか? – AnthonyWJones
- 1. RxでSKPaymentQueueをラップする方法Observable
- 2. Rx Observable - Chaining
- 3. Rx Observableで `` await`できますか?
- 4. WebClientでPUTを実行する方法はありますか?
- 5. イベントの条件に応じてRx Observableを完了する方法
- 6. Silverlight WebClientプログレッシブダウンロード
- 7. Observableパターンを実装するためにRXフレームワークを使用する
- 8. Silverlight - Observableコレクションをラジオボタンリストでバインドする方法をご存知ですか?
- 9. Amazon S3をRXに送信するandroid observable
- 10. RXのタイムアウトでバッファリングを実装する方法
- 11. IISでVS2010からSilverlightアプリケーションを実行する方法
- 12. Silverlightの[保存]ボタンで検証を実行する方法は?
- 13. Observableコレクションの読み込み中にUIを実行する方法
- 14. のSilverlight 4、サブクラスのWebClient
- 15. rxの作成後に要素を追加Observable
- 16. WebClientを使用してSilverlightアプリケーションにXMLデータをロードする方法は?
- 17. Silverlightでヒットテストを実行する
- 18. Silverlight ObservableCollection v。Reactive Extensions for .NET(Rx)
- 19. Silverlight Storyboardのコードを実行する方法xamlではなくBeginime
- 20. .Net RX:並列実行の進行状況を追跡
- 21. 実行方法F#Silverlightライブラリプロジェクトを保持xUnit.net貢献ベースのユニットテスト?
- 22. コレクション内のコレクションを購読するニースRxの方法
- 23. Observable Collectionを使用してSilverlightでDataGridをソート
- 24. JSのRxエクステンションでイベントをバッファする方法
- 25. Silverlight WebClientのタイムアウトを設定するには?
- 26. SilverlightのWebサイトを実行する
- 27. Silverlight 2 WebClientでオンデマンドで画像を開く
- 28. foreachインラインデータバインディングをobservableの文字列で使用する方法
- 29. ブレインストーミング:Silverlightでバックグラウンド計算を実現する方法は?
- 30. Silverlightで "ライブ"フィルタリングを実装する方法
+1私はいくつかのいずれかのように見えるが、何を証明してもらいたい;) – AnthonyWJones