Skip to content

Instantly share code, notes, and snippets.

@jessegavin
Created May 23, 2011 21:29
Show Gist options
  • Save jessegavin/987657 to your computer and use it in GitHub Desktop.
Save jessegavin/987657 to your computer and use it in GitHub Desktop.
private void SendHttpRequest(string httpMethod, string mimeType, string requestBody, string uri)
{
byte[] xmlBytes = Encoding.UTF8.GetBytes(requestBody);
var md5Base64 = Hasher.Md5Hash(xmlBytes).ToBase64();
var dateString = GetDateString();
var stringToSign = GetStringToSign(httpMethod, md5Base64, mimeType, uri, dateString, null);
var signature = Hasher.GetSignature(SecretKey, stringToSign);
Console.Write(DebugMessage("String To Sign", stringToSign));
var qs = new Dictionary<string, string>();
qs.Add("Date", dateString);
qs.Add("AccessKey", AccessKey);
qs.Add("Signature", signature);
var url = BaseUrl + uri + "?" + qs.ToParameterString();
Console.Write(DebugMessage("Request Url", url));
var request = HttpWebRequest.Create(url);
request.Method = httpMethod;
request.ContentType = mimeType;
request.ContentLength = xmlBytes.Length;
request.Headers.Add("Content-MD5", md5Base64);
using (var dataStream = request.GetRequestStream())
{
dataStream.Write(xmlBytes, 0, xmlBytes.Length);
dataStream.Close();
}
var response = (HttpWebResponse)request.GetResponse();
Console.Write(DebugMessage("Http Response Status Code: ", response.StatusCode.ToString()));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment