2016-04-12 22 views
0

POST verileriyle bir web isteği yapmaya çalışıyorum ve yanıtı geri alıyorum. Android için çalışıyorum ama Windows Phone için aynı şekilde çalışmıyor ve işe yaramayacak gibi görünmüyor. Şu anda GetRequestStreamd ve GetResponse için hata alıyorum. async ve await ile denedim, ancak boş göstericiler döndürdü. Android'de şu kodu kullandım:Windows Phone 8.1 webrequest POST yanıtı al

public static string Login(string user, string pwd) 
    { 
     WebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("myurl"); 
     httpWebRequest.Method = "POST"; 
     using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream())) 
     { 
      LoginData data = new LoginData 
      { 
       userid = user, 
       password = pwd 
      }; 
      var json = JsonConvert.SerializeObject(data); 

      streamWriter.Write(json); 
      streamWriter.Flush(); 
      streamWriter.Dispose(); 
     } 

     var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse(); 
     using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) 
     { 
      return streamReader.ReadToEnd(); 
     } 
    } 
+0

Bu konuda ne çalışmıyor? İstisnalar mı alıyorsun? –

cevap

0

Çalışıyorum! Cevap aşağıdaki kodda gösterilmiştir.

public static string postData; 
    public static string responseString; 

    public static async Task PostJsonRequest() 
    { 
     string AuthServiceUri = "myurl"; 
     HttpWebRequest spAuthReq = WebRequest.Create(AuthServiceUri) as HttpWebRequest; 
     spAuthReq.ContentType = "application/json"; 
     spAuthReq.Method = "POST"; 
     spAuthReq.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), spAuthReq); 
    } 

    public static void GetRequestStreamCallback(IAsyncResult callbackResult) 
    { 
     HttpWebRequest myRequest = (HttpWebRequest)callbackResult.AsyncState; 
     Stream postStream = myRequest.EndGetRequestStream(callbackResult); 
     byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
     postStream.Write(byteArray, 0, byteArray.Length); 
     postStream.Dispose(); 
     myRequest.BeginGetResponse(new AsyncCallback(GetResponsetStreamCallback), myRequest); 
    } 

    public static void GetResponsetStreamCallback(IAsyncResult callbackResult) 
    { 
     try 
     { 
      HttpWebRequest request = (HttpWebRequest)callbackResult.AsyncState; 
      HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(callbackResult); 

      Stream streamResponse = response.GetResponseStream(); 
      StreamReader reader = new StreamReader(streamResponse); 
      responseString = reader.ReadToEnd(); 
      streamResponse.Dispose(); 
      reader.Dispose(); 
      response.Dispose(); 
     } 
     catch (Exception e) 
     { 

     } 
    } 

    public static void EnterLoginValues(string user, string pwd) 
    { 
     LoginData data = new LoginData 
     { 
      userid = user, 
      password = pwd 
     }; 
     postData = JsonConvert.SerializeObject(data); 
    } 
İlgili konular