отправить данные для входа методом POST в универсальном приложении

Я работаю в магазине приложений Windows и пытаюсь отправить значения логина и пароля, это мой код:

 try
        {
            string user = login.Text;
            string pass = password.Password;

            ASCIIEncoding encoding = new ASCIIEncoding();
            string postData = "login=" + user + "&mdp=" + pass;
            byte[] data = encoding.GetBytes(postData);

            WebRequest request = WebRequest.Create("myURL/login.php");
            request.Method = "POST";

            request.ContentType = "application/x-www-form-urlencoded";
            request.ContentLength = data.Length;

            Stream stream = request.GetRequestStream();
            stream.Write(data, 0, data.Length);
            stream.Dispose();

            WebResponse response = request.GetResponse();
            stream = response.GetResponseStream();

            StreamReader sr = new StreamReader(stream);


            sr.Dispose();
            stream.Dispose();


        }
        catch (Exception ex)
        {
            ex.Message.ToString();
        }

У меня много таких ошибок:

'WebRequest' does not contain a definition for 'Content Length' and no extension method 'ContentLength' accepting a first argument of type 'WebRequest' was found (a using directive or an assembly reference is she missing ?)
'WebRequest' does not contain a definition for 'GetRequestStream' and no extension method 'GetRequestStream' accepting a first argument of type 'WebRequest' was found (a using directive or an assembly reference is she missing? )
'WebRequest' does not contain a definition for 'GetResponse' and no extension method 'GetResponse' accepting a first argument of type 'WebRequest' was found (a using directive or an assembly reference is she missing? )

Я новичок в универсальных приложениях для Windows, так что у вас есть идеи, как я могу исправить свой код, чтобы отправить данные для входа на сервер, спасибо за помощь


person user3821206    schedule 08.02.2016    source источник


Ответы (1)


Как вы заметили, WebRequest в .NET Core немного отличается от традиционного .NET. Прежде всего, я предлагаю вам взглянуть на HttpClient, который является классом по умолчанию в UWP для работы с HTTP.

Если вы хотите использовать WebRequest, чтобы установить заголовок Content-Length, используйте свойство Headers:

request.Headers["ContentLength"] = length;

Чтобы получить потоки запросов и ответов, вам необходимо использовать async. метод, GetRequestStreamAsync и GetResponseAsync. Синхронные методы недоступны.

В конце концов, ваш код будет выглядеть так:

string user = login.Text;
string user = login.Text;
string pass = password.Password;

ASCIIEncoding encoding = new ASCIIEncoding();
string postData = "login=" + user + "&mdp=" + pass;
byte[] data = encoding.GetBytes(postData);

WebRequest request = WebRequest.Create("myURL/login.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.Headers["ContentLength"] = data.Length.ToString();

using (Stream stream = await request.GetRequestStreamAsync()) {
   stream.Write(data, 0, data.Length);
}

using (WebResponse response = await request.GetResponseAsync()) {
   using (Stream stream = response.GetResponseStream()) {
      using (StreamReader sr = new StreamReader(stream)) {
         //
     }
   }
}
person Mehrzad Chehraz    schedule 08.02.2016