Ajouter un en-tête personnalisé dans HttpWebRequest

89

J'ai besoin d'ajouter des en-têtes personnalisés à l' HttpWebRequestobjet. Comment puis-je ajouter un en-tête personnalisé à un HttpWebRequestobjet dans Windows Phone 7.

Nelson T Joseph
la source

Réponses:

171

Vous utilisez la Headerspropriété avec un index de chaîne:

request.Headers["X-My-Custom-Header"] = "the-value";

Selon MSDN, cela est disponible depuis:

  • Plateforme Windows universelle 4.5
  • .NET Framework 1.1
  • Bibliothèque de classes portable
  • Silverlight 2.0
  • Windows Phone Silverlight 7.0
  • Windows Phone 8.1

https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.headers(v=vs.110).aspx

Anders Tornblad
la source
aussi la chaîne peut être remplacée par enum HttpRequestHeader comme ceci httpWebRequest.Headers [HttpRequestHeader.Authorization] = "value";
OXXY
1
Cela ne répondrait pas à la question initiale, @OXXY. L' HttpRequestHeaderénumération concerne les en-têtes standard - pas les en-têtes personnalisés.
Anders Tornblad
il y a une propriété appelée nom dans l'api de téléchargement de fichier google drive, qui doit être envoyée via la méthode de publication. Donc, request.Headers ["name"] = "hello.txt"; Donc, ce n'est pas reflétant. Toute aide Que devrions-nous utiliser pour les modèles personnalisés?
Susarla Nikhilesh
Les données POST ne sont pas envoyées via les en-têtes, ce n'est donc pas le bon endroit pour votre question. Veuillez poster une nouvelle question.
Anders Tornblad
16

Une méthode simple pour créer le service, ajouter des en-têtes et lire la réponse JSON,

private static void WebRequest()
    {
        const string WEBSERVICE_URL = "<<Web service URL>>";
        try
        {
            var webRequest = System.Net.WebRequest.Create(WEBSERVICE_URL);
            if (webRequest != null)
            {
                webRequest.Method = "GET";
                webRequest.Timeout = 12000;
                webRequest.ContentType = "application/json";
                webRequest.Headers.Add("Authorization", "Basic dchZ2VudDM6cGFdGVzC5zc3dvmQ=");

                using (System.IO.Stream s = webRequest.GetResponse().GetResponseStream())
                {
                    using (System.IO.StreamReader sr = new System.IO.StreamReader(s))
                    {
                        var jsonResponse = sr.ReadToEnd();
                        Console.WriteLine(String.Format("Response: {0}", jsonResponse));
                    }
                }
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
        }
    }
Requin
la source
2
Authorizationn'est pas un en-tête personnalisé et doit être géré de manière plus contrôlée.
Anders Tornblad