in aliyun-net-credentials/Http/HttpResponse.cs [275:333]
public static async Task<HttpWebRequest> GetWebRequestAsync(HttpRequest request)
{
var uri = new Uri(request.Url);
var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
httpWebRequest.Method = request.Method.ToString();
httpWebRequest.KeepAlive = true;
httpWebRequest.Timeout =
request.ConnectTimeout > 0 ? request.ConnectTimeout : DefaultConnectTimeoutInMilliSeconds;
httpWebRequest.ReadWriteTimeout =
request.ReadTimeout > 0 ? request.ReadTimeout : DefaultReadTimeoutInMilliSeconds;
if (DictionaryUtil.Get(request.Headers, "Accept") != null)
{
httpWebRequest.Accept = DictionaryUtil.Pop(request.Headers, "Accept");
}
if (DictionaryUtil.Get(request.Headers, "Date") != null)
{
var headerDate = DictionaryUtil.Pop(request.Headers, "Date");
httpWebRequest.Date = Convert.ToDateTime(headerDate);
}
foreach (var header in request.Headers)
{
// deal with restricted headers on .NET Framework
if (header.Key.Equals("Content-Length"))
{
httpWebRequest.ContentLength = long.Parse(header.Value);
continue;
}
if (header.Key.Equals("Content-Type"))
{
httpWebRequest.ContentType = header.Value;
continue;
}
if (header.Key.Equals("User-Agent"))
{
httpWebRequest.UserAgent = header.Value;
continue;
}
httpWebRequest.Headers.Add(header.Key, header.Value);
}
if ((request.Method != MethodType.POST && request.Method != MethodType.PUT) || request.Content == null)
return httpWebRequest;
using (var stream = await httpWebRequest.GetRequestStreamAsync())
{
await stream.WriteAsync(request.Content, 0, request.Content.Length);
}
return httpWebRequest;
}