我在C#创建一个WebRequest
:如何知道我的WebRequest是否已满?
var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://myURL");
的URL是一个请求,并且可以得到大。实际上,根据用户的操作,我无法控制尺寸。
为了防止请求太长的情况,我想解析它。
是我可以用来创建有效的WebRequest
的最大长度string
?
我在C#创建一个WebRequest
:如何知道我的WebRequest是否已满?
var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://myURL");
的URL是一个请求,并且可以得到大。实际上,根据用户的操作,我无法控制尺寸。
为了防止请求太长的情况,我想解析它。
是我可以用来创建有效的WebRequest
的最大长度string
?
您将受到接收请求的服务器的限制,服务器和配置会有所不同。作为一个例子,Apache将DEFAULT的最大长度约为8100个字符,但这只是默认值。一个好的经验法则是〜2000个字符,因为这是大多数浏览器最多可以使用的。至于HTTP规范,它是无界的,但你会发现任何服务器都可以按照他们的意愿来限制它。如另一个答案中所指出的,Uri会将其限制为约65k字符。
关于Apache URL的最大长度SO问题:What is apache's maximum url length?
SO有关浏览器的限制问题: What is the maximum length of a URL in different browsers?
内部那个url字符串被解析为Uri
类实例 - 第二个重载WebRequest.Create
它接受Uri
实例被调用。你会得到UriFormatException
如果:
uriString中的长度超过65519个字符或uriString中指定的方案的长度超过1023个字符。
来源:Uri Constructor (String) MSDN
并非所有的浏览器都支持这样长的URI,但如果你正在创建的Web请求programmaticaly,您将在服务器限制只依赖。
有用限制,如在this answer描述的WebRequest,为约2000个字符。
如果您想通过URL发送很多参数,使用POST可能是更适合您需求的解决方案。通过这种方式,实际的URL不会失去控制,并且请求的主体具有更高的限制。