Query til en URL

Tags:    java

På den side jeg er på nu er urlen: http://www.udvikleren.dk/eforum/post.php?f=4
Jeg skal bruge den funktion i Java 1.3 eller 1.4, som kan sende dette query til en server og hente indholdet af siden (altså urlen + den variabler som står bagved spørgsmålstegnet).
Jeg har selv søgt efter den på java.sun.com og i mine hjælpfiler uden held! Men er fuldstændig overbevist om at den eksisterer så host op med det og få de gyldne point!




4 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Tjaa, jeg kiggede lidt efter en metode der gjorde dette automatis, men kunne ikke finde nogen. Det kan selvfølgelig være at der allerede er nogen der har skrevet noget på nettet. Hvor om alting er, kan du selv få fat på documentet ved at gøre noget lignende det jeg har gjort herunder. Desværre skal du selv streame inputtet.

<pre>
import java.io.*;
import java.net.*;

public class geturl {

static final String link = "http://www.udvikleren.dk/eforum/post.php?f=4";

public static void main(String[] args) {
try {
URL myUrl = new URL(link);
parseHTML(new InputStreamReader((InputStream) myUrl.getContent()));
} catch(Exception e) {
System.err.println("Error in main: "+e.toString());
}
}

public static void parseHTML(InputStreamReader in) {
try {
int tmp = in.read();
String document="";
while (tmp != -1) {
document = document+(char) tmp;
tmp = in.read();
}
System.out.println(document);
} catch (Exception e) {
System.err.println("Error in parseHTML: "+e.toString());
}
}
}

</pre>

Jeg vil foreslå dig evt. at kigge nærmere på java.io og java.net.
Der er også en klasse HTMLdocument (har ikke læst den igennem) som du måske kan bruge.

Mvh.,

Jakob Justsen



På den side jeg er på nu er urlen: http://www.udvikleren.dk/eforum/post.php?f=4
Jeg skal bruge den funktion i Java 1.3 eller 1.4, som kan sende dette query til en server og hente indholdet af siden (altså urlen + den variabler som står bagved spørgsmålstegnet).
Jeg har selv søgt efter den på java.sun.com og i mine hjælpfiler uden held! Men er fuldstændig overbevist om at den eksisterer så host op med det og få de gyldne point!

Er ikke ekspert i Java men kan man ikke sende det med i den kode man sætter java appletten ind med på en html side, med noget java-script eller noget?
Mvh
Kaare



Tjaa, jeg kiggede lidt efter en metode der gjorde dette automatis, men kunne ikke finde nogen. Det kan selvfølgelig være at der allerede er nogen der har skrevet noget på nettet. Hvor om alting er, kan du selv få fat på documentet ved at gøre noget lignende det jeg har gjort herunder. Desværre skal du selv streame inputtet.

<pre>
import java.io.*;
import java.net.*;

public class geturl {

static final String link = "http://www.udvikleren.dk/eforum/post.php?f=4";

public static void main(String[] args) {
try {
URL myUrl = new URL(link);
parseHTML(new InputStreamReader((InputStream) myUrl.getContent()));
} catch(Exception e) {
System.err.println("Error in main: "+e.toString());
}
}

public static void parseHTML(InputStreamReader in) {
try {
int tmp = in.read();
String document="";
while (tmp != -1) {
document = document+(char) tmp;
tmp = in.read();
}
System.out.println(document);
} catch (Exception e) {
System.err.println("Error in parseHTML: "+e.toString());
}
}
}

</pre>

Jeg vil foreslå dig evt. at kigge nærmere på java.io og java.net.
Der er også en klasse HTMLdocument (har ikke læst den igennem) som du måske kan bruge.

Mvh.,

Jakob Justsen


Tak for det Jakob! Jeg tjekker det lige i morgen når jeg har tid... hvis det virker får du dine point!

MVH
Regin




Det irreterende her er selvfølgelig bare at du får hele molevitten tilbage som en String. Hvis du vil kunne arbejde med de forskellige tags direkte kan du parse dokumentet til et HTMLDocument.

Bemærk at URL.getContent() ikke altid returnerer den samme type og det kan være nødvendigt at benytte instanceOf operatoren for at bestemme typen.

Jeg så forøvrigt lige at du kan gøre while løkken i parseren lidt pænere ved at skrive sådan her i stedet:

<pre>
try {
int tmp;
String document="";

while ((tmp = in.read()) != -1) {
document = document+(char) tmp;
}

System.out.println(document);

} catch (Exception e) {
System.err.println("Error in parseHTML: "+e.toString());
}
</pre>

Mvh.,

Jakob Justsen



t