自定義Http請求頭並且獲取


在一些開發需求中。我們需要把一些信息放到Http請求頭中。比如我需要把簽名信息 signature 放到Http請求頭

所以就需要自定義請求頭 signature ,用webClient發起請求

我這里僅僅是演示怎么添加 以及怎么獲取

創建一個控制台程序,編寫如下代碼:

 public static string APIPostBack(string url, string posts, string contentType)
        {
            byte[] postData = Encoding.UTF8.GetBytes(posts);
            WebClient client = new WebClient();

            client.Headers.Add("Content-Type", contentType);
            client.Headers.Add("ContentLength", postData.Length.ToString());
            client.Headers.Add("signature", "87&66x@@50w5o6XdPvzRFz7nR0");
            
            byte[] responseData = null;
            string result = "";
            try
            {
                responseData = client.UploadData(url, "POST", postData);
                result = Encoding.UTF8.GetString(responseData);
            }
            catch (Exception ex)
            {
            }
            client.Dispose();
            return result;
        }

調用

 string url = "http://localhost:51484/index.aspx";
 APIPostBack(url, "請求報文", "application/json");

 

  當然。我這里事先知道了這個url。所以這里寫死了

index.aspx 的page_Load頁面

protected void Page_Load(object sender, EventArgs e)
        {
  //命名空間 System.Collections.Specialized;
            NameValueCollection myHeader = new NameValueCollection();
            int i;
            string strKey;
            myHeader = Request.Headers;

            int total = myHeader.Count;
            string strResult = "";
            //獲取header里的signature參數的值
            for (i = 0; i < total; i++)
            {
                strKey = myHeader.GetKey(i);
                if (strKey == "signature")
                {
                    strResult = myHeader.Get(strKey);

                }
            }

            //獲取請求報文,這里是演示
            string reqStr = string.Empty;
            using (Stream s = Request.InputStream)
            {
                using (StreamReader reader = new StreamReader(s, Encoding.UTF8))
                {
                    reqStr = reader.ReadToEnd();
                }
            }
        }

 

1:然后先調試起 index.aspx頁面

2:在請求的控制台項目上,調試--》啟用新實例

 

 

這里在index就收到了請求http的signature 值

 

以及請求報文,如果獲取的是json只需要反序列化即可

 

其實可以直接這樣獲取

string signature = myHeader.Get("signature");

 

 

 

另外。Js是不能處理Http請求的。因為js是前端腳本。如果js能處理Http

那么用戶登錄都用的post就沒有安全可言了。用戶名和密碼都被截取到。

不過js可以獲取Respose的Head信息,代碼來源網絡!

$.ajax({
            type: 'HEAD', // 獲取頭信息,type=HEAD即可
            //url: window.location.href,
            url:"http://device.qq.com/cgi-bin/device_cgi/remote_bind_get_Verify",
            complete: function (xhr, data) {
                // 獲取相關Http Response header
                return;
                var wpoInfo = {
                    // 服務器端時間
                    "date": xhr.getResponseHeader('Date'),
                    // 如果開啟了gzip,會返回這個東西
                    "contentEncoding": xhr.getResponseHeader('Content-Encoding'),
                    // keep-alive ? close?
                    "connection": xhr.getResponseHeader('Connection'),
                    // 響應長度
                    "contentLength": xhr.getResponseHeader('content-length'),
                    // 服務器類型,apache?lighttpd?
                    "server": xhr.getResponseHeader('Server'),
                    "vary": xhr.getResponseHeader('Vary'),
                    "transferEncoding": xhr.getResponseHeader('Transfer-Encoding'),
                    // text/html ? text/xml?
                    "contentType": xhr.getResponseHeader('Content-Type'),
                    "cacheControl": xhr.getResponseHeader('Cache-Control'),
                    // 生命周期?
                    "exprires": xhr.getResponseHeader('Exprires'),
                    "lastModified": xhr.getResponseHeader('Last-Modified'),
                };
                console.log(xhr.getAllResponseHeaders());
                alert(xhr.getResponseHeader('Last-Modified'));
            }
        });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM