得到IObservable< string>对象作为POST请求的响应,我如何才能获得字符串本身
本文关键字:字符串 响应 string IObservable 对象 请求 POST 得到 | 更新日期: 2023-09-27 17:50:49
我使用以下代码片段发送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
从webservice获得响应,在我给出的示例中,我得到的是IObservable<string>
。基本上,我怎么从它得到string
呢?
我知道这是一个有点傻的问题,但我也会感谢任何链接到网站,我可以阅读更多关于这一点。
你不需要使用IObservable。我想你从使用响应式扩展的人那里得到了这段代码。这背后的想法是,你订阅了这个"事件",每次发出请求时,都会向你发送一个字符串。有关响应式扩展的更多信息,请参阅最新的响应式扩展(Rx)教程的答案
如果你不想使用响应式扩展,我建议使用RestSharp。这是一个很好的库,也可以与Windows Phone一起使用,你可以找到许多关于如何使用它的示例。