2012-03-23 17 views
11

これらの強調表示された値のヘッダーの種類はわかりませんが、HttpWebRequestを使用して追加する必要がありますか?HttpWebRequestを使用してカスタムヘッダーを追加する

HTTP Header

は、httpリクエストまたはヘッダデータの強調表示された一部とみなさボディですか?言い換えれば、正しい方法は何ですか?

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

しかし、私は上記のHTTPリクエストを構築する代わりに、次の使用する必要があります?ここ

は、私が現在使用しているコードですか。

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

あなたの最初のコードスニペット正常に動作する必要がありますが、データはヘッダに実際にあることを確認するために、あなたがしようとしましたWiresharkのパケットやそれに類するものを見ていますか? Wiresharkでは、パケットを右クリックして新しいウィンドウで開き、「Hypertext Transfer Protocol」セクションを展開することができます。 – Lander

+0

@M。 Babcock:彼らは同じではない、私はコードの値を変更しました。 – Tarik

+0

@Lander:非常に安全なサーバーで作業していますが、実際のコードは非常に大きく、残念ながらテストするには時間がかかるようです。/ – Tarik

答えて

11

IMHO不正なヘッダーデータとみなされます。

実際には、これらの名前の値のペアを要求の内容(これはPOSTの仕組みです)として送信します。で、ヘッダーはではありません。

第2の方法は真です。

+0

OKありがとう私はあなたに同意します。 – Tarik

+0

これはベストプラクティスではないかもしれませんが、特に特定のAPIを使用する場合は、HTTPリクエストでヘッダを送信する必要があることがあります。 – nmg49

8

、サービスを作成するヘッダを追加し、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

完璧!これはまさに私のヘッダーに必要なものです。ありがとうございました。 – Vippy

+0

喜んで@Vippyを助ける – Lucky

関連する問題