C# декодирует URL-адрес, содержащий%2F по пути, есть ли способ указать API-интерфейсу отправлять URL-адрес как есть?
У меня есть URL в формате ниже abcd.com/xyz/pqr%2Fss/abc
Я хочу, чтобы это было отправлено на сервер как есть. Когда я собираю Uri с помощью System.Uri, он преобразует его в abcd.com/xyz/pqr/ss/abc, и он не работает, так как у меня нет URL с указанным путем.
Когда я попытался с двойным кодированием (abcd.com/xyz/pqr%252Fss/abc), он отправляет Uri как есть, но не удается, поскольку на стороне сервера он преобразуется в (abcd.com/xyz/pqr%2Fss/abc)
2 ответа
У меня тоже была эта проблема, но я нашел решение: когда вы используете HttpUtility.UrlEncode
чтобы быть уверенным, что приложение будет правильно читать URL-адрес, вы должны построить ссылку следующим образом:
http://www.abcd.com/xyz?val=pqr%2Fss
и не так
http://www.abcd.com/xyz/pqr%2Fss
где pqr%2Fss
является результатом HttpUtility.UrlEncode("SOME STRING")
Если вы строите свой URI как таковой:
Uri u = new Uri("http://abcd.com/xyz/pqr%2Fss/abc")
Получите доступ к закодированной строке следующим образом:
u.OriginalString