我有一個簡單的Web API,它返回一個Iobservable。我使用HttpClient獲取Observable,以便我可以訂閱它。我的問題是訂閱返回的Iobservable發出'空'結果。如何從Web API獲取IObservable
服務器
public IObservable<DataItem> GetDataItems()
{
return Observable.Generate(0, i => i < 10, i => i + 1,
i => new DataItem
{
Id = i,
Name = String.Format("Storage{0}",i)
});
}
CLIENT
public IObservable<DataItem> GetDataItems()
{
using (HttpClient apiClient = new HttpClient())
{
apiClient.BaseAddress = new Uri("http://localhost:9001");
apiClient.DefaultRequestHeaders.Add("x-user-authentication", "xxxxxx");
return apiClient
.GetAsync("api/xxxx/yyyy").Result.Content
.ReadAsAsync<DataItem>().ToObservable();
}
}
var source = GetDataItems();
List<DataItem> items = new List<DataItem>();
IDisposable consoleSubscription = source.Subscribe(
x => Console.WriteLine("{0}:{1}", x.Id, x.Name),
ex => Console.WriteLine("OnError : {0} ", ex.Message),
() => Console.WriteLine("Encountered End of Stream")
);
consoleSubscription.Dispose();
我的問題是,我沒有得到任何數據從服務器返回。我得到一個'空'可觀察。我寫了一個針對我的控制器的單元測試,它確實返回了數據項。
任何建議,請幫助。無法理解我出錯的地方。服務器或客戶端上沒有錯誤。
修復了Nirvana鏈接上的link-rot;兵馬俑買了它。 –
Nirvana鏈接不起作用。 –
我已更新它,並添加了一個樣本鏈接。 –