Я ретро-фитинг приложение, чтобы сделать использование PHP HTTP прокси (для кэширования) вместо фактического сервера API, приложение в настоящее время объединяет в себе сервер URI и путь с кодом:Комбинирование URIs и Дорожки
methodUri = new Uri(apiUri, method.Path)
Где:
- apiUri = "http://api.eve-online.com/" (System.Uri объекта)
- method.Path = «/ символ/Ск illIntraining.xml.aspx»(строка)
Результат выше утверждения
"http://api.eve-online.com/char/SkillIntraining.xml.aspx" (System.Uri Object)
Чтобы использовать PHP HTTP прокси-сервер запрос должен быть изменен следующим образом
- apiUri = "http://www.r-s.co.uk/eproxy.php" (Объект System.Uri)
- способ.Path = "/char/SkillIntraining.xml.aspx" (строка)
Выход я ожидал был:
"http://www.r-s.co.uk/eproxy.php/char/SkillIntraining.xml.aspx" (System.Uri Object)
Однако выход я получаю:
"http://www.r-s.co.uk/char/SkillIntraining.xml.aspx" (System.Uri Object)
I понять, что это правильная функциональность конструктора Uri (Uri, string), мой вопрос в том, что было бы лучшей функцией или конструктором для использования на своем месте, чтобы получить ожидаемый результат? Я попытался удалить ведущий «/» в методе. Пат, беря его с абсолютного пути к относительному пути, но это не помогло.
Примечание: оба решения ниже работают, однако System.UriBuilder обеспечивает более надежный механизм для объединения адресов URI и пути и в моем случае привело к уменьшению числа изменений ресурсов, чем при использовании System.Uri. Если бы у меня был выбор, я бы поставил оба ответа правильно.
Вы правы System.UriBuilder - это более надежный способ создания URI, спасибо. –
Обратите внимание, что путь будет закодирован в URL, поэтому, если в нем добавлена строка запроса, символы« и »будут закодированы. слабость в этом методе, как описано. –
'UriBuilder' имеет отдельное свойство Query для строк запроса, которое рекомендуется, так как оно правильно обрабатывает кодировку символов для этого случая использования. –