• C# HTTP系列3 HttpWebRequest.ContentType属性


    获取或设置请求的 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 }
  • 相关阅读:
    模仿微信右上角菜单栏
    改变checkbox的默认样式
    webpack中的静态资源处理
    如何解决Unsupported Architecture. Your executable contains unsupported architecture '[x86_64, i386]
    页面生命周期
    关于在使用Exchange2003系统时无法向sina,yahoo,hotmail等邮箱发送邮件问题的解决方法
    重置TCP/IP协议堆栈的经历
    网通电信双线路上网,网通的走网通线路,电信的走电信线路,内网通过NAT上网,双线路故障自动切换
    在OUTLOOK或OWA中查看邮件的SCL级别(转)
    常用的RBL服务器列表及介绍
  • 原文地址:https://www.cnblogs.com/SavionZhang/p/11394249.html
Copyright © 2020-2023  润新知