我試圖在單個方法中通過Reactive接口IObservable返回HttpWebRequest POST方法的結果。我已經成功地使用下面的代碼爲GET方法做到這一點:是否有可能通過IObservable接口返回HttpWebRequest POST方法的結果
var request = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(url);
request.Method = method;
request.Accept = GetHttpType();
request.CookieContainer = new CookieContainer();
return Observable.FromAsyncPattern(request.BeginGetResponse, ar => ProcessResponse(method, ar, request))()
.Select(r => r);
但我不確定如何鏈連同所需要的響應流的讀取寫入請求流的異步觀察者用於HTTP POST操作。如何將以下變量obs1
& obs2
連接在一起,以便我可以返回obs2?
var request = (HttpWebRequest)WebRequestCreator.ClientHttp.Create(url);
var type = GetHttpType();
request.Method = method;
request.Accept = type;
request.ContentType = type;
request.CookieContainer = new CookieContainer();
var data = Serialize(requestResource);
var obs1 = Observable.FromAsyncPattern(request.BeginGetRequestStream, ar1 => ProcessRequest(method, data, ar1, request))
var obs2 = Observable.FromAsyncPattern(request.BeginGetResponse, ar2 => ProcessResponse(method, ar2, request))();
// How do I connect obs1 And obs2 together...
return obs2;
我還以爲下面應該工作,但「ProcessResponse」方法不會被調用,沒有人知道爲什麼嗎?
var obs1 = Observable.FromAsyncPattern(request.BeginGetRequestStream, ar1 => ProcessRequest(method, data, ar1, request))();
var obs2 = Observable.FromAsyncPattern(request.BeginGetResponse, ar2 => ProcessResponse(method, ar2, request));
return obs1.SelectMany(a => obs2(), (a, b) => b);
他們不是相同類型,所以我不能連接,謝謝 – AwkwardCoder 2010-12-01 13:33:57
對不起,我當時沒有太多關注。我會盡量不從'屁股'從現在開始:) – rawpower 2010-12-01 21:04:37