【问题标题】:Add custom header in HttpWebRequest在 HttpWebRequest 中添加自定义标头
【发布时间】:2012-01-21 03:08:47
【问题描述】:

我需要向HttpWebRequest 对象添加一些自定义标题。如何在 Windows Phone 7 中将自定义标题添加到 HttpWebRequest 对象。

【问题讨论】:

    标签: c# windows-phone-7 header http-headers httpwebrequest


    【解决方案1】:

    您将Headers 属性与字符串索引一起使用:

    request.Headers["X-My-Custom-Header"] = "the-value";
    

    根据 MSDN,此功能从以下时间开始可用:

    • 通用 Windows 平台 4.5
    • .NET 框架 1.1
    • 可移植类库
    • 银光 2.0
    • Windows Phone Silverlight 7.0
    • Windows Phone 8.1

    https://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.headers(v=vs.110).aspx

    【讨论】:

    • 也可以用枚举 HttpRequestHeader 替换字符串,例如 httpWebRequest.Headers[HttpRequestHeader.Authorization] = "value";
    • 那不会回答原来的问题,@OXXY。 HttpRequestHeader 枚举适用于标准标题 - 不适用于自定义标题。
    • google驱动文件上传api中有一个名为name的属性,需要通过post方式发送。所以,request.Headers["name"] = "hello.txt";所以,它没有反映。任何帮助我们应该为自定义的使用什么?
    • POST 数据不是通过 Headers 发送的,所以这不是您的问题的正确位置。请发布一个新问题。
    【解决方案2】:

    创建服务、添加标头和读取 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 = 12000;
                    webRequest.ContentType = "application/json";
                    webRequest.Headers.Add("Authorization", "Basic dchZ2VudDM6cGFdGVzC5zc3dvmQ=");
    
                    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());
            }
        }
    

    【讨论】:

    • Authorization 不是自定义标头,应以更可控的方式处理。
    【解决方案3】:

    您可以向 HttpWebRequest.Headers 集合添加值。

    根据MSDN,windows phone应该是支持的: http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.headers%28v=vs.95%29.aspx

    【讨论】:

      【解决方案4】:

      首先,您需要访问您尝试获取响应的网页。 右键单击>检查>网络>(刷新它)>在名称下单击第一个链接>现在您可以看到请求标头和响应标头

      从那里您可以看到请求标头并相应地添加它们 举个例子:

      HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create(url);

              HttpWReq.Method = "GET";
              HttpWReq.Headers.Add("accept-encoding", "gzip, deflate, br");
              HttpWReq.Headers.Add("cache-control", "max-age=0");
               HttpWReq.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36";
              HttpWReq.Headers.Add("accept-encoding", "gzip, deflate, br");
              HttpWReq.Headers.Add("accept-language", "en-US,en;q=0.9");
              HttpWReq.Headers.Add("cache-control", "max-age=0");
              HttpWReq.Headers.Add("upgrade-insecure-requests", "1");
      

      【讨论】:

        猜你喜欢
        • 2012-04-08
        • 1970-01-01
        • 2012-05-17
        • 1970-01-01
        • 1970-01-01
        • 2012-04-29
        • 2014-05-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多