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
Другие вопросы по тегам