title: Converting ordinary Http Post web request with Async and Await
body: <p>How I can convert my traditional HttpWebRequest "POST" call with Async / Await pattern, Here with this I am attaching my current code, Any one please help me to convert this code using Async / Await pattern for windows phone 8.</p>
  
  <pre><code>public void GetEnvironmentVariables(Action&lt;Credentials&gt; getResultCallback, Action&lt;Exception&gt; getErrorCallback)
  {
      CredentialsCallback = getResultCallback;
      ErrorCallback = getErrorCallback;
      var uri = new Uri(BaseUri);
      var request = (HttpWebRequest)WebRequest.Create(uri);
      request.Method = "POST";
      request.ContentType = "application/json";
      var jsonObject = new JObject
      {
          new JProperty("apiKey",_api),
          new JProperty("affiliateId",_affid),
      };
      var serializedResult = JsonConvert.SerializeObject(jsonObject);
      byte[] requestBody = Encoding.UTF8.GetBytes(serializedResult);
  
      request.BeginGetRequestStream(GetRequestStreamCallback, new object[] { request, requestBody });
  
  }
  
  private void GetRequestStreamCallback(IAsyncResult asynchronousResult)
  {
      var request = (HttpWebRequest)((object[])asynchronousResult.AsyncState)[0];
      using (var postStream = request.EndGetRequestStream(asynchronousResult))
      {
          var byteArray = (byte[])((object[])asynchronousResult.AsyncState)[1];
  
          // Write to the request stream.
          postStream.Write(byteArray, 0, byteArray.Length);
  
      }
      request.BeginGetResponse(GetResponseCallback, request);
  }
  
  private void GetResponseCallback(IAsyncResult asynchronousResult)
  {
      var request = (HttpWebRequest)asynchronousResult.AsyncState;
      try
      {
          var response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
          if (response != null)
          {
              var reader = new StreamReader(response.GetResponseStream());
              string responseString = reader.ReadToEnd();
              Credentails = JsonConvert.DeserializeObject&lt;Credentials&gt;(responseString);
              if (Credentails != null &amp;&amp; string.IsNullOrEmpty(Credentails.Err))
                  CredentialsCallback(Credentails);
              else
              {
                  if (Credentails != null)
                      ErrorCallback(new Exception(string.Format("Error Code : {0}", StorageCredentails.Err)));
              }
          }
      }
      catch (WebException we)
      {
              var reader = new StreamReader(we.Response.GetResponseStream());
              string responseString = reader.ReadToEnd();
              Debug.WriteLine(responseString);
              ErrorCallback(we);
  
      }
  } 
  </code></pre>