in Source/Internal/ServiceHelper.cs [166:247]
internal static Task<Stream> PostStringAsync(Uri url, string data, string contentType)
{
var tcs = new TaskCompletionSource<Stream>();
var request = HttpWebRequest.Create(url);
if (ServiceManager.Proxy != null)
{
request.Proxy = ServiceManager.Proxy;
}
request.Method = "POST";
if (!string.IsNullOrWhiteSpace(contentType))
{
request.ContentType = contentType;
}
else
{
request.ContentType = "text/plain;charset=utf-8";
}
request.BeginGetRequestStream((a) =>
{
try
{
var r = (HttpWebRequest)a.AsyncState;
//Add data to request stream
using (var requestStream = r.EndGetRequestStream(a))
{
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(data);
requestStream.Write(bytes, 0, bytes.Length);
}
request.BeginGetResponse((a2) =>
{
try
{
var r2 = (HttpWebRequest)a2.AsyncState;
using (var response = (HttpWebResponse)r2.EndGetResponse(a2))
{
tcs.SetResult(CopyToMemoryStream(response.GetResponseStream()));
}
}
catch (WebException ex)
{
if (ex.Response != null)
{
tcs.SetResult(CopyToMemoryStream(ex.Response.GetResponseStream()));
}
else
{
tcs.SetException(ex);
}
}
catch (Exception ex)
{
tcs.SetException(ex);
}
}, request);
}
catch (WebException ex)
{
if (ex.Response != null)
{
tcs.SetResult(CopyToMemoryStream(ex.Response.GetResponseStream()));
}
else
{
tcs.SetException(ex);
}
}
catch (Exception ex)
{
tcs.SetException(ex);
}
}, request);
return tcs.Task;
}