Verwenden HttpGet mit ungültigen Zeichen in der URL
Ich versuche, mit DefaultHttpClient
und HttpGet
eine Anfrage an einen web service. Leider ist die web-service-URL enthält unzulässige Zeichen wie { (ex: domain.com/service/{username}). Es ist offensichtlich, dass das web-service-Benennung ist nicht gut geschrieben, aber ich kann es nicht ändern.
Wenn ich HttpGet(url)
ich bekommen, dass ich ein unzulässiges Zeichen in der url (also { und }). Wenn ich die URL entschlüsseln, bevor, dass, ist es kein Fehler, aber der Antrag geht auf eine andere URL, wo es nichts gibt.
Der url, hat zwar illegal Zeichen, funktioniert aus dem browser, aber die HttpGet
Umsetzung nicht lassen Sie mich es verwenden. Was soll ich tun oder verwenden, anstatt das problem zu vermeiden?
- Haben Sie versucht, mit %7B und %7D, etwa so: domain.com/service/%7Busername%7D. Oder ist es das, was du meinst, durch Codierung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
http://java.sun.com/javase/6/docs/api/java/net/URLEncoder.html
Speziell:
Diese Frage ist alt, aber es hat mir geholfen, und ich wollte nur hinzufügen, für alle, die kommen könnte, dass ich das Problem behoben auf meine app mit einer variation von Mike ' s Antwort.
Fand ich, dass die Kodierung nur die relevanten Teile gearbeitet, wo Sie versuchen zu codieren, den gesamten url-Fehler für mich.
sollten wir nicht verwenden, URLEncoder.encode-Adresse Teil der URL, weil er zu Unrecht änderungen Ihres http://domain.com/{username} http%3A%2F%2Fdomain.com%2{username} und Sie sollten wissen, es ersetzt alle Leerzeichen durch '+', dass es besser war, um mich um Sie zu ersetzen mit "%20".
Hier diese Funktion wird erst im letzten Teil des URL, das ist {username} oder Datei-Namen oder nichts haben, die möglicherweise ungültige Zeichen.