Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Repository code
- string url = "/bla/bla/" + blaId + "/";
- Dictionary<string, string> postParams = new Dictionary<string, string>();
- postParams.Add("value", message);
- string response = await BlaDataContext.PostData(url, postParams);
- // ...
- public static async Task<string> PostData(string url, Dictionary<String, String> postParams)
- {
- HttpWebRequest request = WebRequest.CreateHttp(APIURL + url);
- request.ContentType = "application/x-www-form-urlencoded";
- request.Method = "POST";
- postParams.Add("oauth_token", Contract.AccessToken); // where do I add this to the request??
- try
- {
- HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
- Debug.WriteLine(response.ContentType);
- Stream responseStream = response.GetResponseStream();
- string data;
- using (var reader = new StreamReader(responseStream))
- {
- data = reader.ReadToEnd();
- }
- responseStream.Close();
- return data;
- }
- catch (Exception e)
- {
- // whatever
- }
- }
- HttpWebRequest request = WebRequest.CreateHttp("" + url);
- //we could move the content-type into a function argument too.
- request.ContentType = "application/x-www-form-urlencoded";
- request.Method = "POST";
- postParams.Add("oauth_token", ""); // where do I add this to the request??
- try
- {
- //this is how you do it
- using(var stream = await request.GetRequestStreamAsync())
- {
- byte[] jsonAsBytes = Encoding.UTF8.GetBytes(string.Join("&", postParams.Select(pp => pp.Key + "=" + pp.Value)));
- await stream.WriteAsync(jsonAsBytes, 0, jsonAsBytes.Length);
- }
- HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync();
- Debug.WriteLine(response.ContentType);
- System.IO.Stream responseStream = response.GetResponseStream();
- string data;
- using (var reader = new System.IO.StreamReader(responseStream))
- {
- data = reader.ReadToEnd();
- }
- responseStream.Close();
- return data;
- }
- public static class HttpExtensions
- {
- public static Task<Stream> GetRequestStreamAsync(this HttpWebRequest request)
- {
- var tcs = new TaskCompletionSource<Stream>();
- try
- {
- request.BeginGetRequestStream(iar =>
- {
- try
- {
- var response = request.EndGetRequestStream(iar);
- tcs.SetResult(response);
- }
- catch (Exception exc)
- {
- tcs.SetException(exc);
- }
- }, null);
- }
- catch (Exception exc)
- {
- tcs.SetException(exc);
- }
- return tcs.Task;
- }
- public static Task<HttpWebResponse> GetResponseAsync(this HttpWebRequest request)
- {
- var taskComplete = new TaskCompletionSource<HttpWebResponse>();
- request.BeginGetResponse(asyncResponse =>
- {
- try
- {
- HttpWebRequest responseRequest = (HttpWebRequest)asyncResponse.AsyncState;
- HttpWebResponse someResponse =
- (HttpWebResponse)responseRequest.EndGetResponse(asyncResponse);
- taskComplete.TrySetResult(someResponse);
- }
- catch (WebException webExc)
- {
- HttpWebResponse failedResponse = (HttpWebResponse)webExc.Response;
- taskComplete.TrySetResult(failedResponse);
- }
- }, request);
- return taskComplete.Task;
- }
- }
- public static void AddFormData(this HttpWebRequest request, IDictionary<string, string> data)
- {
- using (var memStream = new MemoryStream())
- using (var writer = new StreamWriter(memStream))
- {
- bool first = true;
- foreach (var d in data)
- {
- if (!first)
- writer.Append("&");
- writer.Write(Uri.EscapeDataString(d.Key));
- writer.Write("=");
- writer.Write(Uri.EscapeDataString(d.Value));
- first = false;
- }
- writer.Flush();
- request.ContentLength = memStream.Length;
- memStream.Position = 0;
- using (var reqStream = request.GetRequestStream())
- {
- memStream.CopyTo(reqStream);
- }
- }
- }
- request.AddFormData(postParams);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement