2016-04-12 4 views
0

Я пытаюсь сделать веб-запрос с данными POST и получить ответ. У меня есть работа для Android, но она не работает одинаково для Windows Phone, и я не могу заставить ее работать. В настоящее время я получаю ошибки для GetRequestStreamd и GetResponse. Я пробовал его с async и await, но он вернул нулевые указатели. Я использовал следующий код в Android:Windows Phone 8.1 webrequest POST получить ответ

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

Что это не работает? Вы получаете исключения? –

ответ

0

У меня это работает! Ответ показан в коде ниже.

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); 
    } 
Смежные вопросы