­

C# HTTP系列3 HttpWebRequest.ContentType属性

  • 2019 年 10 月 4 日
  • 筆記

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

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

 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,则属性值将丢失。

参考示例代码:

 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 }