苏飞论坛

标题: ContentLength值是否真的需要设置的问题 [打印本页]

作者: 站长苏飞    时间: 2016-11-15 08:52
标题: ContentLength值是否真的需要设置的问题
昨天一个用户提起这个属性

在开发Htttphelper框架之前我也碰到过类似的问题,

在Post请求时,及时Post内容为0,也需要给ContentLength属性设置一下,否则会请求不成功


这是什么原因呢,下面我们一起来分析一下,首先看一下官方的解释
[C#] 纯文本查看 复制代码
 //
        // 摘要:
        //     获取或设置 Content-lengthHTTP 标头。
        //
        // 返回结果:
        //     要发送到 Internet 资源的数据的字节数。默认值为 -1,该值指示尚未设置该属性,并且没有要发送的请求数据。
        //
        // 异常:
        //   System.InvalidOperationException:
        //     已通过调用 System.Net.HttpWebRequest.GetRequestStream()、System.Net.HttpWebRequest.BeginGetRequestStream(System.AsyncCallback,System.Object)、System.Net.HttpWebRequest.GetResponse()
        //     或 System.Net.HttpWebRequest.BeginGetResponse(System.AsyncCallback,System.Object)
        //     方法启动了该请求。
        //
        //   System.ArgumentOutOfRangeException:
        //     新的 System.Net.HttpWebRequest.ContentLength 值小于 0。
        public override long ContentLength { get; set; }


默认值为 -1 有了这一条,我相信很多人会明白 为什么了,

因为默认值为-1,那么如果服务端要求为0的时候就必须要设置了,
这个我们应该怎么处理呢。

在这里我给出两种方案,第一给一个空字符串,
第二是把Post请求修改为get 请求。因为没有Post数据,再进行Post显然是不适合的。

本来想增加这个属性上去,一直没有确定,因为我担心用户会输入错误,或者会有用户认为是必须要写的。造成麻烦。

在此希望这类用户谅解。也希望大家说说自己的看法,看有没有折中的方法。


作者: 客服~小小    时间: 2016-11-15 08:58
强烈支持楼主ing……




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4