private static HttpWebRequest CreatePostRequest(Uri requestUri, bool writeBody)
{
var uriWithoutQuery = new Uri(requestUri.GetComponents(UriComponents.SchemeAndServer | UriComponents.Path, UriFormat.Unescaped));
var postRequest = WebRequest.CreateHttp(uriWithoutQuery);
postRequest.Method = "POST";
var bodyWithQuery = requestUri.GetComponents(UriComponents.Query, UriFormat.UriEscaped);
var bodyBytes = Encoding.UTF8.GetBytes(bodyWithQuery);
postRequest.ContentLength = bodyBytes.Length;
if (writeBody)
{
var stream = postRequest.GetRequestStream();
stream.Write(bodyBytes, 0, bodyBytes.Length);
stream.Close();
}
return postRequest;
}