internal virtual HttpWebRequest CreateWebRequest (HttpRequestMessage request)
{
var wr = new HttpWebRequest (request.RequestUri);
wr.ThrowOnError = false;
wr.AllowWriteStreamBuffering = false;
wr.ConnectionGroupName = connectionGroupName;
wr.Method = request.Method.Method;
wr.ProtocolVersion = request.Version;
if (wr.ProtocolVersion == HttpVersion.Version10) {
wr.KeepAlive = request.Headers.ConnectionKeepAlive;
} else {
wr.KeepAlive = request.Headers.ConnectionClose != true;
}
wr.ServicePoint.Expect100Continue = request.Headers.ExpectContinue == true;
if (allowAutoRedirect) {
wr.AllowAutoRedirect = true;
wr.MaximumAutomaticRedirections = maxAutomaticRedirections;
} else {
wr.AllowAutoRedirect = false;
}
wr.AutomaticDecompression = automaticDecompression;
wr.PreAuthenticate = preAuthenticate;
if (useCookies) {
// It cannot be null or allowAutoRedirect won't work
wr.CookieContainer = CookieContainer;
}
if (useDefaultCredentials) {
wr.UseDefaultCredentials = true;
} else {
wr.Credentials = credentials;
}
if (useProxy) {
wr.Proxy = proxy;
}
// Add request headers
var headers = wr.Headers;
foreach (var header in request.Headers) {
foreach (var value in header.Value) {
headers.AddValue (header.Key, value);
}
}
return wr;
}