Ich bin Nachrüsten eine Anwendung Verwendung eines PHP HTTP-Proxy zu machen (für Caching) anstelle des eigentlichen API-Server die Anwendung zur Zeit verbindet der Server-URI und der Pfad mit dem Code:Kombination URIs und Pfade
methodUri = new Uri(apiUri, method.Path)
Wo:
- apiUri = "http://api.eve-online.com/" (System.Uri Object)
- method.Path = „/ char/Sk illIntraining.xml.aspx“(string)
Das Ergebnis der obigen Aussage ist
"http://api.eve-online.com/char/SkillIntraining.xml.aspx" (System.Uri Object)
Um den PHP HTTP-Proxy zu verwenden, die Anforderung geändert werden müßte, als
- folgt apiUri = "http://www.r-s.co.uk/eproxy.php" (System.Uri Objekt)
- methode.Pfad = "/char/SkillIntraining.xml.aspx" (string)
Der Ausgang Ich hatte erwartet, war:
"http://www.r-s.co.uk/eproxy.php/char/SkillIntraining.xml.aspx" (System.Uri Object)
jedoch der Ausgang ich erhalte, ist:
"http://www.r-s.co.uk/char/SkillIntraining.xml.aspx" (System.Uri Object)
I verstehe, dass dies die korrekte Funktionalität des Konstruktors Uri (Uri, String) ist, meine Frage ist, was wäre eine bessere Funktion oder Konstruktor an ihrer Stelle zu verwenden, um die Ausgabe zu erhalten, die ich erwarte? Ich habe versucht, das führende "/" in method.Path zu entfernen, das es von einem absoluten Weg zu einem relativen Weg nimmt, aber das half nicht.
HINWEIS: beiden Lösungen unten funktionieren, aber System.UriBuilder einen robusteren Mechanismus sorgt für die Kombination von URIs und Pfaden und in meinem Fall in weniger Veränderungen führte zu Ressourcen als System.Uri verwenden. Hätte ich die Wahl, würde ich beide Antworten als richtig markieren.
Sie sind richtig System.UriBuilder ist eine robustere Methode zum Erstellen von URIs, danke. –
Beachten Sie, dass der Pfad URL-codiert sein wird, wenn der Zusatz eine Abfragezeichenfolge enthält, werden die Zeichen? und & codiert eine Schwäche in dieser Methode wie beschrieben –
'UriBuilder' hat eine separate Query-Eigenschaft für Query-Strings, die empfohlen wird, da es die Zeichencodierung für diesen Anwendungsfall korrekt behandelt –