2012-03-23 18 views
11

No estoy realmente seguro de qué tipo de encabezados son estos valores resaltados, pero ¿cómo debo agregarlos usando HttpWebRequest?Agregue encabezados personalizados utilizando HttpWebRequest

HTTP Header

es el organismo considera parte resaltada de la solicitud HTTP o datos de cabecera? En otras palabras, ¿qué camino es el correcto?

Aquí está el código que estoy utilizando actual:

HttpWebRequest request = (HttpWebRequest) WebRequest.Create("/securecontrol/reset/passwordreset"); 
request.Headers.Add("Authorization", "Basic asdadsasdas8586"); 
request.ContentType = "application/x-www-form-urlencoded"; 
request.Host = "www.xxxxxxxxxx.com"; 
request.Method = "POST"; 
request.Proxy = null; 
request.Headers.Add("&command=requestnewpassword"); 
request.Headers.Add("&application=netconnect"); 

Pero debo usar el siguiente lugar para construir la petición HTTP anterior?

string reqString = "&command=requestnewpassword&application=netconnect"; 
byte[] requestData = Encoding.UTF8.GetBytes(reqString); 

HttpWebRequest request = (HttpWebRequest) WebRequest.Create("/securecontrol/reset/passwordreset"); 
request.Headers.Add("Authorization", "Basic ashAHasd87asdHasdas"); 
request.ContentType = "application/x-www-form-urlencoded"; 
request.ContentLength = requestData.Length; 
request.Proxy = null; 
request.Host = "www.xxxxxxxxxx.com"; 
request.Method = "POST"; 

using (Stream st = request.GetRequestStream()) 
st.Write(requestData, 0, requestData.Length); 
+0

que el fragmento del primer código debería funcionar bien, pero para verificar que los datos son, de hecho, en la cabecera, ¿trató de mirando el paquete en Wireshark o algo similar? En Wireshark, puede hacer clic con el botón derecho en un paquete, seleccionar para abrirlo en una nueva ventana y luego expandir la sección "Protocolo de transferencia de hipertexto". – Lander

+0

@M. Babcock: No son lo mismo, cambié los valores en el código. – Tarik

+0

@Lander: estoy trabajando con un servidor muy seguro y el código real es muy grande y parece que se necesita tiempo para probarlo desafortunadamente:/ – Tarik

Respuesta

11

En mi opinión se considera como datos de encabezado malformados.

En realidad, desea enviar esos pares de valores de nombre como el contenido de solicitud (esta es la forma en que funciona POST) y no como encabezados.

La segunda forma es verdadera.

+0

OK, gracias, estoy de acuerdo. Solo quería asegurarme de que estoy bien. – Tarik

+0

Si bien esta podría no ser la mejor práctica, a veces es necesario enviar encabezados en una solicitud HTTP, particularmente cuando se usan ciertas API. – nmg49

8

Un método simple de crear el servicio, añadiendo cabeceras y la lectura de 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 = 20000; 
      webRequest.ContentType = "application/json"; 
      webRequest.Headers.Add("Authorization", "Basic dcmGV25hZFzc3VudDM6cGzdCdvQ="); 
      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()); 
    } 
} 
+0

¡Perfecto! Esto es exactamente lo que necesitaba para mi encabezado. Gracias. – Vippy

+0

Me alegro de ayudar a @Vippy – Lucky

Cuestiones relacionadas