Advertisement
Guest User

Untitled

a guest
Apr 17th, 2014
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.22 KB | None | 0 0
  1. // Repository code
  2.  
  3. string url = "/bla/bla/" + blaId + "/";
  4. Dictionary<string, string> postParams = new Dictionary<string, string>();
  5. postParams.Add("value", message);
  6. string response = await BlaDataContext.PostData(url, postParams);
  7.  
  8. // ...
  9.  
  10. public static async Task<string> PostData(string url, Dictionary<String, String> postParams)
  11. {
  12. HttpWebRequest request = WebRequest.CreateHttp(APIURL + url);
  13. request.ContentType = "application/x-www-form-urlencoded";
  14. request.Method = "POST";
  15. postParams.Add("oauth_token", Contract.AccessToken); // where do I add this to the request??
  16.  
  17. try
  18. {
  19. HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
  20.  
  21. Debug.WriteLine(response.ContentType);
  22. Stream responseStream = response.GetResponseStream();
  23. string data;
  24. using (var reader = new StreamReader(responseStream))
  25. {
  26. data = reader.ReadToEnd();
  27. }
  28. responseStream.Close();
  29.  
  30. return data;
  31. }
  32. catch (Exception e)
  33. {
  34. // whatever
  35. }
  36. }
  37.  
  38. HttpWebRequest request = WebRequest.CreateHttp("" + url);
  39. //we could move the content-type into a function argument too.
  40. request.ContentType = "application/x-www-form-urlencoded";
  41. request.Method = "POST";
  42. postParams.Add("oauth_token", ""); // where do I add this to the request??
  43. try
  44. {
  45. //this is how you do it
  46. using(var stream = await request.GetRequestStreamAsync())
  47. {
  48. byte[] jsonAsBytes = Encoding.UTF8.GetBytes(string.Join("&", postParams.Select(pp => pp.Key + "=" + pp.Value)));
  49. await stream.WriteAsync(jsonAsBytes, 0, jsonAsBytes.Length);
  50. }
  51. HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
  52.  
  53. Debug.WriteLine(response.ContentType);
  54. System.IO.Stream responseStream = response.GetResponseStream();
  55. string data;
  56. using (var reader = new System.IO.StreamReader(responseStream))
  57. {
  58. data = reader.ReadToEnd();
  59. }
  60. responseStream.Close();
  61.  
  62. return data;
  63. }
  64.  
  65. public static class HttpExtensions
  66. {
  67. public static Task<Stream> GetRequestStreamAsync(this HttpWebRequest request)
  68. {
  69. var tcs = new TaskCompletionSource<Stream>();
  70.  
  71. try
  72. {
  73. request.BeginGetRequestStream(iar =>
  74. {
  75. try
  76. {
  77. var response = request.EndGetRequestStream(iar);
  78. tcs.SetResult(response);
  79. }
  80. catch (Exception exc)
  81. {
  82. tcs.SetException(exc);
  83. }
  84. }, null);
  85. }
  86. catch (Exception exc)
  87. {
  88. tcs.SetException(exc);
  89. }
  90.  
  91. return tcs.Task;
  92. }
  93. public static Task<HttpWebResponse> GetResponseAsync(this HttpWebRequest request)
  94. {
  95. var taskComplete = new TaskCompletionSource<HttpWebResponse>();
  96. request.BeginGetResponse(asyncResponse =>
  97. {
  98. try
  99. {
  100. HttpWebRequest responseRequest = (HttpWebRequest)asyncResponse.AsyncState;
  101. HttpWebResponse someResponse =
  102. (HttpWebResponse)responseRequest.EndGetResponse(asyncResponse);
  103. taskComplete.TrySetResult(someResponse);
  104. }
  105. catch (WebException webExc)
  106. {
  107. HttpWebResponse failedResponse = (HttpWebResponse)webExc.Response;
  108. taskComplete.TrySetResult(failedResponse);
  109. }
  110. }, request);
  111. return taskComplete.Task;
  112. }
  113. }
  114.  
  115. public static void AddFormData(this HttpWebRequest request, IDictionary<string, string> data)
  116. {
  117. using (var memStream = new MemoryStream())
  118. using (var writer = new StreamWriter(memStream))
  119. {
  120. bool first = true;
  121. foreach (var d in data)
  122. {
  123. if (!first)
  124. writer.Append("&");
  125. writer.Write(Uri.EscapeDataString(d.Key));
  126. writer.Write("=");
  127. writer.Write(Uri.EscapeDataString(d.Value));
  128. first = false;
  129. }
  130. writer.Flush();
  131. request.ContentLength = memStream.Length;
  132. memStream.Position = 0;
  133. using (var reqStream = request.GetRequestStream())
  134. {
  135. memStream.CopyTo(reqStream);
  136. }
  137. }
  138. }
  139.  
  140. request.AddFormData(postParams);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement