2016-04-12 18 views
0

Ich versuche, eine Webanfrage mit POST-Daten zu machen und die Antwort zurück zu bekommen. Ich habe es funktioniert für Android, aber es funktioniert nicht die gleiche Weise für Windows Phone und ich kann nicht scheinen, um es zum Laufen zu bringen. Ich erhalte derzeit Fehler für GetRequestStreamd und GetResponse. Ich habe es mit async und await versucht, aber es gab Nullzeiger zurück. Ich habe den folgenden Code in Android verwendet:Windows Phone 8.1 webrequest POST Antwort erhalten

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

Was funktioniert daran nicht? Erhalten Sie Ausnahmen? –

Antwort

0

Ich habe es funktioniert! Die Antwort wird im folgenden Code angezeigt.

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); 
    }