前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C# HTTP系列3 HttpWebRequest.ContentType属性

C# HTTP系列3 HttpWebRequest.ContentType属性

作者头像
张传宁IT讲堂
发布2019-09-17 18:19:40
1.7K0
发布2019-09-17 18:19:40
举报

获取或设置请求的 Content-type HTTP 标头的值。默认值为null

常见的请求内容类型为以下几种:

代码语言:javascript
复制
 1 /// <summary>
 2 /// HTTP 内容类型(Content-Type)
 3 /// </summary>
 4 public class HttpContentType
 5 {
 6     /// <summary>
 7     /// 资源类型:普通文本
 8     /// </summary>
 9     public const string TEXT_PLAIN = "text/plain";
10 
11     /// <summary>
12     /// 资源类型:JSON字符串
13     /// </summary>
14     public const string APPLICATION_JSON = "application/json";
15 
16     /// <summary>
17     /// 资源类型:未知类型(数据流)
18     /// </summary>
19     public const string APPLICATION_OCTET_STREAM = "application/octet-stream";
20 
21     /// <summary>
22     /// 资源类型:表单数据(键值对)
23     /// </summary>
24     public const string WWW_FORM_URLENCODED = "application/x-www-form-urlencoded";
25 
26     /// <summary>
27     /// 资源类型:表单数据(键值对)。编码方式为 gb2312
28     /// </summary>
29     public const string WWW_FORM_URLENCODED_GB2312 = "application/x-www-form-urlencoded;charset=gb2312";
30 
31     /// <summary>
32     /// 资源类型:表单数据(键值对)。编码方式为 utf-8
33     /// </summary>
34     public const string WWW_FORM_URLENCODED_UTF8 = "application/x-www-form-urlencoded;charset=utf-8";
35 
36     /// <summary>
37     /// 资源类型:多分部数据
38     /// </summary>
39     public const string MULTIPART_FORM_DATA = "multipart/form-data";
40 }

提交的时候可以说明编码的方式,用来使对方服务器能够正确的解析。

ContentType的属性包含请求的媒体类型。分配给ContentType属性的值在请求发送Content-typeHTTP标头时替换任何现有内容。

要清除Content-typeHTTP标头,请将ContentType属性设置为null

此属性的值存储在WebHeaderCollection中。如果设置了WebHeaderCollection,则属性值将丢失。

参考示例代码:

代码语言:javascript
复制
 1 private HttpResult Request(string url, string data, string method, string contentType)
 2 {
 3     HttpResult httpResult = new HttpResult();
 4     HttpWebRequest httpWebRequest = null;
 5 
 6     try
 7     {
 8         httpWebRequest = WebRequest.Create(url) as HttpWebRequest;
 9         httpWebRequest.Method = method;
10         httpWebRequest.Headers = HeaderCollection;
11         httpWebRequest.CookieContainer = CookieContainer;

12         /*此属性的值存储在WebHeaderCollection中。如果设置了WebHeaderCollection,则属性值将丢失。
13          *所以放置在Headers 属性之后设置
14         */
15         httpWebRequest.ContentType = contentType;
16         httpWebRequest.UserAgent = _userAgent;
17         httpWebRequest.AllowAutoRedirect = _allowAutoRedirect;
18         httpWebRequest.ServicePoint.Expect100Continue = false;
19 
20         if (data != null)
21         {
22             httpWebRequest.AllowWriteStreamBuffering = true;
23             using (Stream requestStream = httpWebRequest.GetRequestStream())
24             {
25                 requestStream.Write(EncodingType.GetBytes(data), 0, data.Length);
26                 requestStream.Flush();
27             }
28         }
29 
30         HttpWebResponse httpWebResponse = httpWebRequest.GetResponse() as HttpWebResponse;
31         if (httpWebResponse != null)
32         {
33             GetResponse(ref httpResult, httpWebResponse);
34             httpWebResponse.Close();
35         }
36     }
37     catch (WebException webException)
38     {
39         GetWebExceptionResponse(ref httpResult, webException);
40     }
41     catch (Exception ex)
42     {
43         GetExceptionResponse(ref httpResult, ex, method, contentType);
44     }
45     finally
46     {
47         if (httpWebRequest != null)
48         {
49             httpWebRequest.Abort();
50         }
51     }
52 
53     return httpResult;
54 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档