Ajouter un en-tête personnalisé dans HttpWebRequest


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


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());
        }
    }

2
Authorizationn'est pas un en-tête personnalisé et doit être géré de manière plus contrôlée.
Anders Tornblad

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.