I'm using this code snippet to send POST request:
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;
});
}
I'm new to C# and I don't really understand why do I have to use this IObservable
interface. I was trying to find any information about it on the internet, but I couldn't.
What I really need is to get reponse from webservice as a string
and in the example I gave, what I get is IObservable<string>
. So basically, how can I get my string
from it?
I know this is a bit silly question, but I would also appreciate any links to sites where I could read more about this.