zoukankan      html  css  js  c++  java
  • 问题:request.Headers;结果:HttpWebRequest.Headers 属性

     指定构成 HTTP 标头的名称/值对的集合。

    Headers 集合包含与请求关联的协议标头。下表列出了由系统或由属性或方法设置但未存储在 Headers 中的 HTTP 标头。

     

    标头

    设置方

    Accept

    Accept 属性设置。

    Connection

    Connection 属性和 KeepAlive 属性设置。

    Content-Length

    ContentLength 属性设置。

    Content-Type

    ContentType 属性设置。

    Expect

    Expect 属性设置。

    Date

    由系统设置为当前日期。

    Host

    由系统设置为当前主机信息。

    If-Modified-Since

    IfModifiedSince 属性设置。

    Range

    AddRange 方法设置。

    Referer

    Referer 属性设置。

    Transfer-Encoding

    TransferEncoding 属性设置(SendChunked 属性必须为 true)。

    User-Agent

    UserAgent 属性设置。

    如果您试图设置这些受保护的标头之一,则 Add 方法将引发 ArgumentException

    在通过调用 GetRequestStreamBeginGetRequestStreamGetResponseBeginGetResponse 方法启动请求之后,更改 Headers 属性将引发 InvalidOperationException

    不应该假设标头值会保持不变,因为 Web 服务器和缓存可能会更改标头或向 Web 请求添加标头。

    1. // Create a new 'HttpWebRequest' Object to the mentioned URL.  
    2. HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create("http://www.contoso.com");  
    3. // Assign the response object of 'HttpWebRequest' to a 'HttpWebResponse' variable.  
    4. HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();  
    5. Console.WriteLine("/nThe HttpHeaders are /n/n/tName/t/tValue/n{0}",myHttpWebRequest.Headers);  
    6. // Print the HTML contents of the page to the console.   
    7. Stream streamResponse=myHttpWebResponse.GetResponseStream();  
    8. StreamReader streamRead = new StreamReader( streamResponse );  
    9. Char[] readBuff = new Char[256];  
    10. int count = streamRead.Read( readBuff, 0, 256 );  
    11. Console.WriteLine("/nThe HTML contents of page the are  : /n/n ");      
    12. while (count > 0)   
    13. {  
    14.     String outputData = new String(readBuff, 0, count);  
    15.     Console.Write(outputData);  
    16.     count = streamRead.Read(readBuff, 0, 256);  
    17. }  
    18. // Close the Stream object.  
    19. streamResponse.Close();  
    20. streamRead.Close();  
    21. // Release the HttpWebResponse Resource.  
    22. myHttpWebResponse.Close();  

    版权声明:本文为博主原创文章,未经博主允许不得转载。

     

    场景是 winform程序通过HttpWebRequest 调用web Api 接口
    其中参数没传过去,有做过这东西的,给点建议。
    下面贴代码;


      

    C# code?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
     /// <summary>  
            /// 创建POST方式的HTTP请求  
            /// </summary>  
            /// <param name="url">请求的URL</param>  
            /// <param name="parameters">随同请求POST的参数名称及参数值字典</param>  
            /// <param name="timeout">请求的超时时间</param>  
            /// <param name="userAgent">请求的客户端浏览器信息,可以为空</param>  
            /// <param name="requestEncoding">发送HTTP请求时所用的编码</param>  
            /// <param name="cookies">随同HTTP请求发送的Cookie信息,如果不需要身份验证可以为空</param>  
            /// <returns></returns>  
            public static HttpWebResponse CreatePostHttpResponse(string url, IDictionary<stringstring> parameters, int? timeout, string userAgent, Encoding requestEncoding, CookieCollection cookies)
            {
                if (string.IsNullOrEmpty(url))
                {
                    throw new ArgumentNullException("url");
                }
                if (requestEncoding == null)
                {
                    throw new ArgumentNullException("requestEncoding");
                }
                HttpWebRequest request = null;
                //如果是发送HTTPS请求  
                if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
                {
                    ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
                    request = WebRequest.Create(url) as HttpWebRequest;
                    request.ProtocolVersion = HttpVersion.Version10;
                }
                else
                {
                    request = WebRequest.Create(url) as HttpWebRequest;
                }
                request.Method = "POST";
                 
                request.Headers.Add("X_REG_CODE""288a633ccc1");
                request.Headers.Add("X_MACHINE_ID""a306b7c51254cfc5e22c7ac0702cdf87");
                request.Headers.Add("X_REG_SECRET""de308301cf381bd4a37a184854035475d4c64946");
                request.Headers.Add("X_STORE""0001");
                request.Headers.Add("X_BAY""0001-01");
                request.Headers.Add("X-Requested-With""XMLHttpRequest");
                request.ContentType = "application/x-www-form-urlencoded";
                request.Headers.Add("Accept-Language""zh-CN");
                request.Headers.Add("Accept-Encoding""gzip, deflate");
                request.Accept = "*/*";
                 
                if (!string.IsNullOrEmpty(userAgent))
                {
                    request.UserAgent = userAgent;
                }
                else
                {
                    request.UserAgent = DefaultUserAgent;
                }
     
                if (timeout.HasValue)
                {
                    request.Timeout = timeout.Value;
                }
               // if (cookies != null)
               // {
                    request.CookieContainer = new CookieContainer();
                   // request.CookieContainer.Add(cookies);
               // }
                //如果需要POST数据  
                if (!(parameters == null || parameters.Count == 0))
                {
                    StringBuilder buffer = new StringBuilder();
                    int i = 0;
                    foreach (string key in parameters.Keys)
                    {
                        if (i > 0)
                        {
                            buffer.AppendFormat("&{0}={1}", key, parameters[key]);
                        }
                        else
                        {
                            buffer.AppendFormat("{0}={1}", key, parameters[key]);
                        }
                        i++;
                    }
     
                    byte[] data = requestEncoding.GetBytes(buffer.ToString());
                    using (Stream stream = request.GetRequestStream())
                    {
                        stream.Write(data, 0, data.Length);
                    }              
                }   
                HttpWebResponse res;
                try
                {
                    res = (HttpWebResponse)request.GetResponse();
                }
                catch (WebException ex)
                {
                    res = (HttpWebResponse)ex.Response;
                }
     
                return res;
            }



    下面是调用代码

    C# code?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
       public string GetCookies()
            {
                
     
                string url = "http://localhost:17766/Account/LogOn";
     
                IDictionary<stringstring> parameters = new Dictionary<stringstring>();
                parameters.Add("StoreCode""0001");
                parameters.Add("UserName""T00000");
                parameters.Add("Password""123456");
     
                 
     
                //string postData = "StoreCode=0001&UserName=T00000&Password=123456";
     
                //HttpWebResponseUtility.PostData(postData, url, null);
     
     
     
                Encoding encoding = Encoding.GetEncoding("gb2312"); 
     
                HttpWebResponse response = HttpWebResponseUtility.CreatePostHttpResponse(url, parameters, nullnull, encoding, null);
     
     
     
                String xml = new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd();
     
                return xml;
     
            }
  • 相关阅读:
    移动端触摸右侧菜单栏,页面内容对应项滚动到最上方
    swiper使用中一些点的总结
    javaScript正则表达式入门
    javaScript之数组操作方法(一)
    初识vue
    焦点控制切换和轮播
    文本内容只显示两行,然后加...
    图片父容器高度不定的图片垂直居中
    css3图片垂直居中
    【C#】两个list根据某个元素比较差集
  • 原文地址:https://www.cnblogs.com/longphui/p/4746824.html
Copyright © 2011-2022 走看看