2017-02-23 38 views
0

我在C#創建一個WebRequest如何知道我的WebRequest是否已滿?

var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://myURL"); 

的URL是一個請求,並且可以得到大。實際上,根據用戶的操作,我無法控制尺寸。

爲了防止請求太長的情況,我想解析它。

是我可以用來創建有效的WebRequest的最大長度string

回答

1

您將受到接收請求的服務器的限制,服務器和配置會有所不同。作爲一個例子,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?

0

內部那個url字符串被解析爲Uri類實例 - 第二個重載WebRequest.Create它接受Uri實例被調用。你會得到UriFormatException如果:

uriString中的長度超過65519個字符或uriString中指定的方案的長度超過1023個字符。

來源:Uri Constructor (String) MSDN

並非所有的瀏覽器都支持這樣長的URI,但如果你正在創建的Web請求programmaticaly,您將在服務器限制只依賴。

1

RFC7230沒有限制的URL的大小和建議

所有HTTP發件人和收件人至少支持 8000個字節的請求行長度。

但有物理限制爲包括在maximum of 65519 chars

1

有用限制,如在this answer描述的WebRequest,爲約2000個字符。

如果您想通過URL發送很多參數,使用POST可能是更適合您需求的解決方案。通過這種方式,實際的URL不會失去控制,並且請求的主體具有更高的限制。

相關問題