#44
2008-01-19, 19:38:57
Jaa und da wäre dann mein Problem. Den Code fürs POST hab ich mir schon aus dem Web besorgt (da keine Ahnung davon; hab nur die Seite eingetragen und die sache mit der SID), aber warum bekomme ich da keine Response zurück? Wo landet die sonst? Les ich das Falsche? Geht das so überhaupt, oder sollte ich mit Sockets arbeiten?
Comments in Deutsch hab ich verbrochen.
public class WeWantDownloads {
@Test public void testHomePage() throws Exception {
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2);
final HtmlPage page = (HtmlPage) webClient.getPage("http://www.zielseite.de/show/1234/[downloadname]/");
// Auf einem Form auf dieser page ist ein Downloadbutton (input type=submit)
// der die versteckte SID (auf der Form als hidden input) posted/soll wohl dl-manager abhalten...
// Das gilt es zu umgehen ;)
HtmlForm frm = (HtmlForm) page.getForms().get(0);
try {
// Construct data
String data = URLEncoder.encode("sid", "UTF-8") + "=" + URLEncoder.encode(frm.getInputByName("sid").getValueAttribute(), "UTF-8");
// Send data
URL url = new URL("http://www.zielseite.de/down.php?dl=4013");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
int i = 0;
while (line = rd.readLine() != null) {
System.out.println(i++ + line);
}
} catch (Exception e) {
}
}
}
Das ganze Läuft mit htmlUnit (das kann leider keine downloads testen; die ersten 3 zeilen + das suchen der sid wird damit erledigt) das sich auf JUnit stützt (ist schön einfach die SID zu bekommen, will später noch mehr seitenteile auslesen).
Comments in Deutsch hab ich verbrochen.
public class WeWantDownloads {
@Test public void testHomePage() throws Exception {
final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_2);
final HtmlPage page = (HtmlPage) webClient.getPage("http://www.zielseite.de/show/1234/[downloadname]/");
// Auf einem Form auf dieser page ist ein Downloadbutton (input type=submit)
// der die versteckte SID (auf der Form als hidden input) posted/soll wohl dl-manager abhalten...
// Das gilt es zu umgehen ;)
HtmlForm frm = (HtmlForm) page.getForms().get(0);
try {
// Construct data
String data = URLEncoder.encode("sid", "UTF-8") + "=" + URLEncoder.encode(frm.getInputByName("sid").getValueAttribute(), "UTF-8");
// Send data
URL url = new URL("http://www.zielseite.de/down.php?dl=4013");
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
int i = 0;
while (line = rd.readLine() != null) {
System.out.println(i++ + line);
}
} catch (Exception e) {
}
}
}
Das ganze Läuft mit htmlUnit (das kann leider keine downloads testen; die ersten 3 zeilen + das suchen der sid wird damit erledigt) das sich auf JUnit stützt (ist schön einfach die SID zu bekommen, will später noch mehr seitenteile auslesen).