2012-03-23 22 views
11

Nie jestem do końca pewien, jaki typ nagłówków mają podświetlone wartości, ale w jaki sposób powinienem je dodać za pomocą HttpWebRequest?Dodawanie niestandardowych nagłówków za pomocą HttpWebRequest

HTTP Header

Czy wyróżnioną częścią uważane treści żądania HTTP lub danych nagłówka? Innymi słowy, która droga jest właściwa?

Oto kod Obecnie używam:

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"); 

Ale powinno się używać następujących zamiast budować żądania HTTP powyżej?

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

Twój pierwszy fragment kodu powinien działać dobrze, ale aby sprawdzić, czy dane są w rzeczywistości w nagłówku, czy spróbować patrząc na pakiet w Wireshark czy coś podobnego? W programie Wireshark można kliknąć pakiet prawym przyciskiem myszy, wybrać, aby otworzyć go w nowym oknie, a następnie rozwinąć sekcję "Protokół przesyłania hipertekstu". – Lander

+0

@M. Babcock: To nie to samo, zmieniłem wartości w kodzie. – Tarik

+0

@Lander: Pracuję z bardzo bezpiecznym serwerem, a rzeczywisty kod jest tak duży i wygląda na to, że przetestowanie go zajmuje trochę czasu:/ – Tarik

Odpowiedz

11

IMHO uważa się za zniekształcone dane nagłówka.

Rzeczywiście chcesz wysłać te pary wartości nazw jako treść żądania (tak działa POST) , a nie jako nagłówki.

Drugi sposób jest prawdziwy.

+0

OK, zgadzam się z Tobą. Chciałem tylko upewnić się, że wszystko dobrze. – Tarik

+0

Chociaż może to nie być najlepsza praktyka, czasami konieczne jest wysyłanie nagłówków w żądaniu HTTP, szczególnie w przypadku używania niektórych interfejsów API. – nmg49

8

Prosta metoda tworzenia serwisu, dodawanie nagłówków i czytając odpowiedź 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

Idealny! Dokładnie tego potrzebowałem do mojego nagłówka. Dziękuję Ci. – Vippy

+0

Cieszę się, że mogę pomóc @Vippy – Lucky

Powiązane problemy