'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
OriginalL'auteur Sebastian Xavier | 2014-06-20
Vous devez vous connecter pour publier un commentaire.
WP8 prend en charge un sous-ensemble de .NET Framework 4.5.
Vous pouvez adapter le code de variations ci-dessous pour répondre à vos besoins:
ou
Version Alternative ajouté juste au cas où ça aide. Les deux sont utilisés dans un WP8 application de mon propre ont donc été testées.
Oui, partiellement réussi, une petite erreur reste "Erreur 2 Le type de retour d'une méthode asynchrone doit être nulle, de la Tâche ou des Tâches<T>"
Maintenant que le code ne fonctionne pas, j'ai mis à jour la question : voir mise à Jour 2.
Le problème est résolu; réponse est mis à jour dans la question elle-même... Si vous pouviez me montrer, comment JSON l'analyser, ce serait sympa.
OriginalL'auteur Gavin