2011-01-03 14 views
2

Ich habe ein Problem mit URL und relativen Pfad (Abfrage). Ich schrieb diesen Code absolute URL aus der relativen URL zu erhalten:java.net.URL und relative URL

old = "http://domain/script?param"; 
    new_ = "?otherparam"; 
    URL u = new URL(old); 
    u = new URL(u,new_); 

Hier wird ausgegeben:

JAVA URL: http://domain/script?param + ?otherparam = http://domain/?otherparam 
FireFox: http://domain/script?param + ?otherparam = http://domain/script?otherparam 

Warum Ergebnis schließt URLs unterscheiden sich von FireFox? Wie erstellt man eine URL wie FireFox?

+0

was meinst du "Firefox"? – Bozho

+0

@Bozho überprüfen Ausgabe Abschnitt –

+0

ja, Firefox oder andere Browser. – JakeLi

Antwort

1

Lesen javadoc von URL (URL Kontext, String spec) bietet die beste Antwort auf Ihre Frage:

Wenn der Pfad Komponente spec mit einem Schrägstrich „/“ beginnt dann wird der Pfad so behandelt, als Absolut und der Spezifikationspfad ersetzt den Kontextpfad.

Andernfalls wird der Pfad als relativer Pfad behandelt und an den Kontextpfad angehängt, wie in RFC2396 beschrieben. Auch in diesem Fall wird der Pfad durch das Entfernen von Verzeichnisänderungen kanalisiert, die durch das Vorkommen von ".." und "."

Da Ihre URL URL Kontext endet ohne Schrägstrich, wird es entfernt zu werden.

Versuchen Strich hinzuzufügen: old = "http://domain/script/?param";

+0

Ich mache Sitemap. Ich muss jede Seite herunterladen und alle URLs (a href) daraus extrahieren. URLs sind unterschiedlich - beginnen Sie mit?, /, ./, ../, absolut usw. Sie müssen alle verarbeiten. Entschuldigung, ich habe deine beste Antwort nicht bekommen. In meiner Beispiel-URL beginnt mit "?" (es ist Abfrageteil). – JakeLi

+0

Tut mir leid, ich habe die Antwort bearbeitet, ich hoffe, jetzt ist es klarer. – Tarlog