'Système.Net.HttpWebRequest' ne contient pas une définition pour 'GetResponse'

Je suis entrain de créer une méthode pour consommer une bonne méthode d'OBTENIR dans Visual studio 2013, avec framework 4.5. C'est windows_phone_8 (ciblage Phone OS 8.0) de l'application. Voici mon code.

static string HttpGet(string url)
    {
        HttpWebRequest req = WebRequest.Create(url)
                             as HttpWebRequest;
        string result = null;
        using (HttpWebResponse resp = req.GetResponse()
                                      as HttpWebResponse)
        {
            StreamReader reader =
                new StreamReader(resp.GetResponseStream());
            result = reader.ReadToEnd();
        }
        return result;
    }

Mais j'obtiens une erreur comme suit

'Système.Net.HttpWebRequest' ne contient pas une définition pour
'GetResponse' et aucune méthode d'extension 'GetResponse' acceptant un premier
argument de type 'System.Net.HttpWebRequest' a pu être trouvée (êtes-vous
manque une directive using ou une référence d'assembly?)

Je ne sais pas pourquoi cela arrive, le même code fonctionne bien avec Windows_application dans le même environnement.

Mise à jour : j'ai essayé avec le client web méthode

 WebClient client = new WebClient();

            client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

            Stream data = client.OpenRead("http://192.168.10.73:8087/cisms/mobilews/login/userNameCheck?userName=supervisor");
            StreamReader reader = new StreamReader(data);
            string s = reader.ReadToEnd();
            data.Close();
            reader.Close();

A un autre ensemble d'erreurs ...

Erreur De 1 'Système.Net.WebHeaderCollection' ne contient pas une définition
pour 'Ajouter' et aucune méthode d'extension 'Ajouter' acceptant un premier argument de
type de Système.Net.WebHeaderCollection' a pu être trouvé (vous manque
une directive using ou une référence d'assembly?)

Erreur 2 'Système.Net.WebClient " ne contient pas une définition pour
'OpenRead' et aucune méthode d'extension 'OpenRead' acceptant un premier
argument de type 'System.Net.WebClient' a pu être trouvée (êtes-vous
manque une directive using ou une référence d'assembly?)

Erreur 3 'Système.Net.HttpWebRequest' ne contient pas une définition pour
'GetResponse' et aucune méthode d'extension 'GetResponse' acceptant un premier
argument de type 'System.Net.HttpWebRequest' a pu être trouvée (êtes-vous
manque une directive using ou une référence d'assembly?)

Mise à jour 2 :

J'ai modifié le code comme suit, basé sur @Gavin réponse..

static async void HttpGet(string url)
    {
        Uri uri = new Uri(url);
        string result = null;
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
        request.Method = "GET";
        using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)))
        {
            StreamReader reader = new StreamReader(response.GetResponseStream());
            result = reader.ReadToEnd();
        }
    }

Mais le contrôle remonte à l'appel de l'événement, à partir de la ligne suivante

using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)))

toute aide serait grandement appréciée.

Réponse :

J'ai modifié le code comme suit et il travaille maintenant..

public async Task<string> httpRequest(string url)
        {
            Uri uri = new Uri(url);
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
            string received;

            using (var response = (HttpWebResponse)(await Task<WebResponse>.Factory.FromAsync(request.BeginGetResponse, request.EndGetResponse, null)))
            {
                using (var responseStream = response.GetResponseStream())
                {
                    using (var sr = new StreamReader(responseStream))
                    {

                        received = await sr.ReadToEndAsync();
                    }
                }
            }

            return received;
        }

l'appel de la partie est comme suit...

private async void Button_Click(object sender, RoutedEventArgs e)
        {
            string uriString = "http://192.168.10.73:8087/cisms/mobilews/login/userNameCheck?userName=supervisor";
            var response = await httpRequest(uriString);
        }

Mise à jour 3:

Je n'ai plus un problème dans le traitement de la requête POST. Le code que j'ai essayé est donnée ci-dessous.

static string HttpPost(string url, string[] paramName, string[] paramVal)
        {
            HttpWebRequest req = WebRequest.Create(new Uri(url))
                                 as HttpWebRequest;
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";

            //Build a string with all the params, properly encoded.
            //We assume that the arrays paramName and paramVal are
            //of equal length:
            StringBuilder paramz = new StringBuilder();
            for (int i = 0; i < paramName.Length; i++)
            {
                paramz.Append(paramName[i]);
                paramz.Append("=");
                paramz.Append(HttpUtility.UrlEncode(paramVal[i]));
                paramz.Append("&");
            }

            //Encode the parameters as form data:
            byte[] formData =
                UTF8Encoding.UTF8.GetBytes(paramz.ToString());
            req.ContentLength = formData.Length;

            //Send the request:
            using (Stream post = req.GetRequestStream())
            {
                post.Write(formData, 0, formData.Length);
            }

            //Pick up the response:
            string result = null;
            using (HttpWebResponse resp = req.GetResponse()
                                          as HttpWebResponse)
            {
                StreamReader reader =
                    new StreamReader(resp.GetResponseStream());
                result = reader.ReadToEnd();
            }

            return result;
        }

Cette méthode est d'avoir deux construire des erreurs dans Windows phone 8 application

Erreur De 1 'Système.Net.HttpWebRequest' ne contient pas une définition pour
'GetRequestStream' et aucune méthode d'extension 'GetRequestStream'
acceptant un premier argument de type 'System.Net.HttpWebRequest " pourrait
(vous manque une directive using ou une référence d'assembly?)

Erreur 2 'Système.Net.HttpWebRequest' ne contient pas une définition pour
'GetResponse' et aucune méthode d'extension 'GetResponse' acceptant un premier
argument de type 'System.Net.HttpWebRequest' a pu être trouvée (êtes-vous
manque une directive using ou une référence d'assembly?)

Merci
Sebastian

Plus généralement, souvent dans WP8, vous essayez d'utiliser des méthodes qui ne fonctionnent pas et vous ne savez pas pourquoi. C'est parce que il y a quelques méthodes qui fonctionnent sur W8 ou WinRT, mais pas WP8. Lorsque vous êtes confronté avec un code qui DEVRAIT fonctionner et vous obtenez une erreur comme ça, juste google "votre méthode WP8" et vous aurez probablement à trouver la méthode de remplacement, vous pouvez utiliser

OriginalL'auteur Sebastian Xavier | 2014-06-20