Frage

Ich habe also Java-Code, der Jakarta HttpClient wie folgt verwendet:

URI aURI = new URI( "http://host/index.php?title=" + title + "&action=edit" );
GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery());

Das Problem ist, dass wenn title Enthält alle kaufmännischen Und-Zeichen (&), sie gelten als Parametertrennzeichen und die Anfrage wird verrückt ...und wenn ich sie durch das URL-escaped-Äquivalent ersetze %26, dann wird dies von getEscapedPathQuery() doppelt maskiert %2526.

Ich arbeite derzeit daran, dies zu umgehen, indem ich den Schaden im Grunde genommen danach behebe:

URI aURI = new URI( "http://host/index.php?title=" + title.replace("&", "%26") + "&action=edit" );
GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery().replace("%2526", "%26"));

Aber dort hat das wäre eine schönere Möglichkeit, das zu machen, oder?Beachten Sie, dass der Titel eine beliebige Anzahl unvorhersehbarer UTF-8-Zeichen usw. enthalten kann. Daher ist es erforderlich, alles andere zu maskieren.

War es hilfreich?

Lösung

Bitte schön:

import java.net.URLEncoder;
...
...
URI aURI = new URI( "http://host/index.php?title=" + URLEncoder.encode(title,"UTF-8") + "&action=edit" );
GetMethod aRequest = new GetMethod( aURI.getPathQuery());

Prüfen java.net.urlencoder Für mehr Information.

Andere Tipps

Warum rufst du GetScapedPathQuery () an, wenn du das Flucht nicht willst? Entscheide einfach, wer es ist, und sei konsequent.

Benutzen Sie die URLEncoder Klasse.

Utility-Klasse für die HTML-Formularkodierung.Diese Klasse enthält statische Methoden zum Konvertieren einer Zeichenfolge in die Anwendung/X-WWW-Form-Urscoded-MIME-MIME-Format.Weitere Informationen zur HTML -Formcodierung finden Sie in der HTML -Spezifikation.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top