Wie benutzt man java.net.URI?

8

Ich habe versucht, java.net.URI zu verwenden, um Abfragezeichenfolgen zu manipulieren, aber ich scheiterte sogar bei sehr einfachen Aufgaben, wie das Abrufen der Abfragezeichenfolge von einer URL und das Platzieren in einer anderen.

Weißt du, wie dieser Code unten funktioniert?

%Vor%

Aufruf an uri2.toASCIIString() sollte zurückkehren: http://domain/a-path?param1=x%3D1 aber es gibt zurück: http://domain/a-path?param1=x%253D1 (Doppelcodierung)

Wenn ich getQuery () anstelle von getRawQuery () verwende, wird die Abfragezeichenfolge überhaupt nicht codiert und die URL sieht so aus: http://domain/a-path?param1=x=1

    
Piotr Czapla 09.09.2011, 13:13
quelle

2 Antworten

1

Das Problem besteht darin, dass der zweite Konstruktor die Abfrage und das Fragment mithilfe der URL-Codierung codiert. Aber = ist ein legales URI-Zeichen, also wird es das nicht für Sie kodieren; und % ist kein gültiges URI-Zeichen, also wird es codieren. Das ist genau das Gegenteil von dem, was Sie wollen, in diesem Fall.

Sie können also den zweiten Konstruktor nicht verwenden. Verwenden Sie die erste, indem Sie die Teile der Zeichenfolge selbst verketten.

    
Jesper 09.09.2011, 13:40
quelle
0

Können Sie den Aufruf mit einem Aufruf von getQuery() ? in java.net.URLEncoder.encode(String) umbrechen?

%Vor%     
Ryan Ransford 09.09.2011 13:41
quelle

Tags und Links