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 }