estoy retro-ajuste de una aplicación para hacer uso de un proxy PHP HTTP (para el almacenamiento en caché) en lugar del servidor API actual, la aplicación actualmente combina el servidor URI y la ruta con el código:URI Combinando y rutas
methodUri = new Uri(apiUri, method.Path)
Donde:
- apiUri = "http://api.eve-online.com/" (System.Uri Object)
- method.Path = "/ char/Sk illIntraining.xml.aspx"(cadena)
El resultado de la declaración anterior es
"http://api.eve-online.com/char/SkillIntraining.xml.aspx" (System.Uri Object)
Para usar el proxy HTTP PHP petición tendría que ser cambiado de la siguiente manera
- apiUri = "http://www.r-s.co.uk/eproxy.php" (Objeto System.Uri)
- method.Path = "/char/SkillIntraining.xml.aspx" (cadena)
La salida me esperaba era:
"http://www.r-s.co.uk/eproxy.php/char/SkillIntraining.xml.aspx" (System.Uri Object)
Sin embargo la salida que recibo es:
"http://www.r-s.co.uk/char/SkillIntraining.xml.aspx" (System.Uri Object)
I Entiendo que esta es la funcionalidad correcta del constructor Uri (Uri, cadena), mi pregunta es ¿cuál sería una mejor función o constructor para usar en su lugar para obtener la salida que espero? He intentado eliminar el método "/" principal. Sin embargo, tomarlo de una ruta absoluta a una ruta relativa no fue de ayuda.
NOTA: ambas soluciones por debajo de hacer el trabajo, sin embargo System.UriBuilder proporciona un mecanismo más robusto para combinar URI de caminos y en mi caso dado lugar a un menor número de cambios en el uso de recursos que System.Uri. Si tuviera la opción, marcaría ambas respuestas como correctas.
Tiene la razón System.UriBuilder es una forma más sólida de compilar URI, gracias. –
Tenga en cuenta que la ruta tendrá codificación URL, por lo que si la adición contiene una cadena de consulta, los caracteres? y & se codificarán. Esto es una debilidad en este método como se describe. –
'UriBuilder' tiene una propiedad Query separada para cadenas de consulta, que se recomienda ya que maneja la codificación de caracteres correctamente para ese caso de uso. –