我在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不會失去控制,並且請求的主體具有更高的限制。