web-dev-qa-db-fra.com

Comment obtenir une réponse json en utilisant system.net.webrequest en c #?

J'ai besoin d'obtenir des données JSON d'un domaine externe. J'ai utilisé webrequest pour obtenir la réponse d'un site Web. Voici le code:

var request = WebRequest.Create(url);
string text;
var response = (HttpWebResponse) request.GetResponse();

using (var sr = new StreamReader(response.GetResponseStream()))
{
    text = sr.ReadToEnd();
}

Quelqu'un sait pourquoi je ne peux pas obtenir les données JSON?

77
h3n

Vous devez demander explicitement le type de contenu.

Ajouter cette ligne:

 request.ContentType = "application/json; charset=utf-8";
64
Oren A

Certaines API souhaitent que vous fournissiez l'en-tête "Accepter" approprié dans la demande pour obtenir le type de réponse souhaité.

Par exemple, si une API peut renvoyer des données au format XML et JSON et que vous souhaitez obtenir le résultat JSON, vous devez définir le paramètre HttpWebRequest.Accept propriété de "application/json" .

HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(requestUri);
httpWebRequest.Method = WebRequestMethods.Http.Get;
httpWebRequest.Accept = "application/json";
71
Martin Buberl