Agregar encabezado personalizado en HttpWebRequest

Respuestas:

172

Usas la Headerspropiedad con un índice de cadena:

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

Según MSDN, esto ha estado disponible desde:

  • Plataforma universal de Windows 4.5
  • .NET Framework 1.1
  • Biblioteca de clases portátil
  • 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
fuente
también la cadena se puede reemplazar con la enumeración HttpRequestHeader como este httpWebRequest.Headers [HttpRequestHeader.Authorization] = "valor";
OXXY
1
Eso no respondería a la pregunta original, @OXXY. La HttpRequestHeaderenumeración es para encabezados estándar, no para personalizados.
Anders Tornblad
hay una propiedad llamada nombre en la API de carga de archivos de Google Drive, que debe enviarse a través del método de publicación. Entonces, request.Headers ["name"] = "hello.txt"; Entonces, no se refleja. Cualquier ayuda ¿Qué debemos usar para los personalizados?
Susarla Nikhilesh
Los datos POST no se envían a través de encabezados, por lo que este no es el lugar adecuado para su pregunta. Publica una nueva pregunta.
Anders Tornblad
17

Un método simple para crear el servicio, agregar encabezados y leer la respuesta 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());
        }
    }
Tiburón
fuente
3
Authorizationno es un encabezado personalizado y debe manejarse de una manera más controlada.
Anders Tornblad