为测试创建自定义http标头 -

时间:2012-10-04 13:06:58

标签: c# http-headers request response

我正在使用c#编写授权管理模块。凭证将从http标头中提取。 我的问题是: 我只定义了http标头的外观(txt文件)。所以我需要在代码中准备标题以进行测试,(在default.aspx中向标题添加键和值):

Response.AppendHeader("contractualData", "03346-b0-t-vg");
Response.AppendHeader("Location", "Default.aspx");
Response.Redirect("page2.aspx");

,而且当我用

读取page2.aspx pageload中的标题时
Request.Headers["contractualData"];

我看不到新添加的键和值。(我可以看到它在IEWatch的响应头中,但我无法通过request.headers读取它。我也尝试过Response.AddHeader或Response.Headers.Add同样的行为!)我该怎么办?

一般情况下,如何准备自定义标头并使用该标头测试我的代码?

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。创建请求标头并发布它。以下代码有效:

protected void Page_Load(object sender, EventArgs e)

        {


            string path = Request.Url.Scheme + "://" + Request.Url.Host + ":" + Request.Url.Port + "/";

            myRedirect(path + "TestRedirectTo.aspx", "test", "testValue");

        }

        protected void myRedirect(string url, string headerName, string headerValue)

        {

            Response.Clear();

            System.Net.WebRequest request = System.Net.WebRequest.Create(url);

            request.Headers.Add(headerName, headerValue);

            System.Net.WebResponse response = request.GetResponse();

            System.IO.StreamReader sr = new System.IO.StreamReader(response.GetResponseStream(), System.Text.Encoding.Default);


            string content = sr.ReadToEnd();

            sr.Close();

            Response.Write(content);

            sr.Close();

            Response.End();

        }

答案 1 :(得分:0)

除非我让事情落后 - 在发送页面请求用于发送标题。在接收页面中,应该使用请求来读取它们。