我使用此代码片段发送 POST 请求:
public IObservable<string> BeginPost(Uri uri, string postData)
{
var request = HttpWebRequest.CreateHttp(uri);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
var fetchRequestStream = Observable.FromAsyncPattern<Stream>(request.BeginGetRequestStream, request.EndGetRequestStream);
var fetchResponse = Observable.FromAsyncPattern<WebResponse>(request.BeginGetResponse, request.EndGetResponse);
return fetchRequestStream().SelectMany(stream =>
{
using (var writer = new StreamWriter(stream)) writer.Write(postData);
return fetchResponse();
}).Select(result =>
{
var response = (HttpWebResponse)result;
string s = "";
if (response.StatusCode == HttpStatusCode.OK)
{
using (var reader = new StreamReader(response.GetResponseStream()))
s = reader.ReadToEnd();
}
return s;
});
}
我是 C# 新手,我不太明白为什么我必须使用这个 IObservable
界面。我试图在互联网上找到有关它的任何信息,但找不到。
我真正需要的是从网络服务获得响应 string
在我给出的示例中,我得到的是 IObservable<string>
。所以基本上,我怎样才能得到我的string
从中?
我知道这是一个有点愚蠢的问题,但我也很感激任何指向我可以阅读更多相关信息的网站的链接。
最佳答案
您不必使用 IObservable。我想您是从与 Reactive Extensions 一起工作的人那里获得此代码的。这背后的想法是,您订阅这个“事件”,并且每次发出请求时都会向您发送一个字符串。有关响应式(Reactive)扩展的更多信息,请参阅此问题的答案 Reactive Extension (Rx) tutorial that is up to date
如果您不想使用响应式(Reactive)扩展,我建议使用 RestSharp 。这是一个很好的库,也适用于 Windows Phone,您可以找到许多有关如何使用它的示例。
关于c# - 获取 IObservable<string> 对象作为对 POST 请求的响应,如何获取字符串本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14192943/