指定构成 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。
在通过调用 GetRequestStream、BeginGetRequestStream、GetResponse 或 BeginGetResponse 方法启动请求之后,更改 Headers 属性将引发 InvalidOperationException。
不应该假设标头值会保持不变,因为 Web 服务器和缓存可能会更改标头或向 Web 请求添加标头。
- // Create a new 'HttpWebRequest' Object to the mentioned URL.
- HttpWebRequest myHttpWebRequest=(HttpWebRequest)WebRequest.Create("http://www.contoso.com");
- // Assign the response object of 'HttpWebRequest' to a 'HttpWebResponse' variable.
- HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
- Console.WriteLine("/nThe HttpHeaders are /n/n/tName/t/tValue/n{0}",myHttpWebRequest.Headers);
- // Print the HTML contents of the page to the console.
- Stream streamResponse=myHttpWebResponse.GetResponseStream();
- StreamReader streamRead = new StreamReader( streamResponse );
- Char[] readBuff = new Char[256];
- int count = streamRead.Read( readBuff, 0, 256 );
- Console.WriteLine("/nThe HTML contents of page the are : /n/n ");
- while (count > 0)
- {
- String outputData = new String(readBuff, 0, count);
- Console.Write(outputData);
- count = streamRead.Read(readBuff, 0, 256);
- }
- // Close the Stream object.
- streamResponse.Close();
- streamRead.Close();
- // Release the HttpWebResponse Resource.
- myHttpWebResponse.Close();
版权声明:本文为博主原创文章,未经博主允许不得转载。
场景是 winform程序通过HttpWebRequest 调用web Api 接口
其中参数没传过去,有做过这东西的,给点建议。
下面贴代码;
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< string , string > 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;
}
|
下面是调用代码
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< string , string > parameters = new Dictionary< string , string >();
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, null , null , encoding, null );
String xml = new StreamReader(response.GetResponseStream(), Encoding.UTF8).ReadToEnd();
return xml;
}
|