2016-08-22 69 views
0

我試圖傳遞一組具有反斜槓(「\」)的值。這打破了URL。我提交的URL是https://{mycompany}.attasksandbox.com/attask/api/project?ID=57ba84---1&updates={"description":"ToImplementWorkFront","URL":"T:%5CTechnologyWorkRequests%5C2016%5CTAD160888_Communications"}&apiKey=g--t&method=putAttask - 在URL中傳遞反斜槓()作爲值

我基本上要值傳遞給URL字段"URL": "T:\TechnologyWorkRequests\2016\TAD160888_Communications"

我明白反斜槓是一個不安全的字符,因此編碼爲%5C以及%255C-但我得到JSON解析錯誤。 我能夠將正斜槓(/)編碼爲%2F,但我無法傳遞「\」字符。任何人都可以幫忙嗎?提前致謝!

回答

0

對於這種類型的任務,您應該使用POST而不是GET方法。 如果你仍然想使用GET你可以這樣做下面的例子:

"https://posturl/?update=" + encodeURIComponent("{ \"path\": \"C:\\Windows\\System32\"}") 

更安全:

var data = { 
    "path": "C:\\Windows\\System32\" 
} 
var url = "https://posturl/?update=" + encodeURIComponent(JSON.stringify(data)) 
+0

丹尼爾 - 我從來沒有使用GET,而是用過PUT按照REST原則。我使用.Net框架,它具有編碼和解碼URL的功能。但問題是,API的設計如何接受這樣的請求?一旦我知道它應該通過的方式,我可以從我的C#代碼中處理它。 – Paalya

+0

如果您使用put,那麼您應該將數據放在請求正文中而不是url中。 如果您使用的點網的WebAPI應該聲明如下: '[HttpPut] 公開結果更新([FromBody]的UpdateData數據)' 反斜槓不影響,只要是怎麼JSON數據分析爲您不要當你編碼數據時並不關心它。在C#中:'var data = JsonConverter.Serialize(updateData);'然後你把它放在不放在URL中。 我有一個建議,如果你正在編寫寧靜的API,你應該看看Swagger工具。這非常有用。 –

+0

丹尼爾 - 感謝您的意見,但我的問題更專用於attask API。我正在使用webclient從.Net應用程序使用API​​,這在這種情況下是微不足道的。首先,我應該瞭解API如何設計爲接受「\」字符作爲值。一旦我有了這些信息,我就可以以所需的格式傳遞請求。我正在尋找特定於attask API的答案。 – Paalya