2014-11-24 66 views
0

我必須使用HTTP GET創建webrequest,我必須在url上添加一個JSON序列化並使用所有參數進行編碼。編碼JSON序列化爲URL

但是我有,當我編碼序列化對象的問題,他們也像編碼符號「{」和「:」

我想知道我必須以編碼序列做對象像上面的如下:

序列化的對象:

{\ 「名稱\」:\ 「鮑勃\」}

編碼隨着HttpUtility.Utility或另一編碼器將編碼所有符號:如 「{」 「:」

「%7B%22Name%22%3A%22Bob%22%2

我在找什麼:

http://tmpserviceURL.test?parameters={%20%22Name%22:%20%22Bob%22} 
+1

你*想*這些字符進行編碼。 – 2014-11-24 13:37:11

+0

ty螞蟻,我不想編碼「{」和「:」 – user1520494 2014-11-24 13:50:36

回答

2

@Ant P是正確的:你想來編碼這些字符。不編碼它們是一個壞主意。

HttpUtility.UrlEncode和其它類似的方法進行編碼{}:,因爲它們必須每統一資源定位器規範(RFC 1738)的第2.2節這樣做。

從第2頁:

八位字[URL中]必須,如果他們有US-ASCII編碼字符集內沒有相應的圖形 字符,如果利用 對應的字符是不安全的編碼或者如果相應的字符 被保留用於特定URL 方案內的一些其他解釋。

該規範繼續定義:作爲在該組的「保留」字符爲(那些具有一個URL中的特殊含義),且{}定義爲在該組的「不安全」字符爲(那些已知有時會被網關和其他運輸代理修改的)。因此,簡而言之,如果您將這些字符在URL中未經編碼發送,則可能導致URL未被正確解釋,或者數據在到達目的地時被破壞。它有時可能有效,但你不能依賴它始終工作。

如果你真的覺得你必須忽略URL規範,那麼你將不得不推出你自己的URL編碼器,不編碼這些特定的字符。我懷疑你會找到一個可以讓你做到的現成的編碼器。