Pikachu
Aktives Mitglied
- Mitglied seit
- 18 Nov 2006
- Beiträge
- 2,424
- Punkte für Reaktionen
- 36
- Punkte
- 48
Ansonsten kenne ich ehrlich gesagt auch kein wget mit "multipart/form-data"-Support (das muß nichts heißen) und - woran es bei mir beim Senden von solchen Formularen per wget (Option post-file bzw. body-file)
Wie ich Lesen konnte wird "multipart/form-data" nicht direkt unterstützt wie bei anderen HTTP-Clienten auch.
Aber nur über einen kleinen Trick klappte es jetzt auch bei mir mit WGET unter Windows,
aber nur wenn man zuvor eine Datei Post-File.txt erstellt die so oder ähnlich hier:
Code:
---16263092.984375
Content-Disposition: form-data; name="sid"
31759cce28d35980
---16263092.984375
Content-Disposition: form-data; name="PhonebookId"
0
---16263092.984375
Content-Disposition: form-data; name="PhonebookExportName"
Telefonbuch
---16263092.984375
Content-Disposition: form-data; name="PhonebookExport"
---16263092.984375--
Dann sollte das hier:
Code:
wget --post-file="Post-File.txt" --header="HOST: fritz.box" --header="Content-Type: multipart/form-data; boundary=---16263092.984375" "http://fritz.box/cgi-bin/firmwarecfg" -O "Telefonbuch.xml"
Die Datei Post-File.txt muss vor jedem WGET aufruf neu erstellt werden
da man immer eine Aktuelle SID benötigt da es sonst nicht klappt.
Auszug Java
Code:
String postdata = "";
String sRow = "---" + (12345 + Math.round( Math.random() * (16777216 - 12345) ));
String sPhonebookId = "0"; // 255 = Intern // 256 = Clip Info // 0 = Haupttelefonbuch
String sPhonebookExportName = "Telefonbuch"; // muss mindestens ein Zeichen enthalten ab ID 1
postdata = sRow + "\r\n" + "Content-Disposition: form-data; name=" + "\"sid\"" + "\r\n" + "\r\n" + sRetSID + "\r\n";
postdata += sRow + "\r\n" + "Content-Disposition: form-data; name=" + "\"PhonebookId\"" + "\r\n" + "\r\n" + sPhonebookId + "\r\n";
postdata += sRow + "\r\n" + "Content-Disposition: form-data; name=" + "\"PhonebookExportName\"" + "\r\n" + "\r\n" + sPhonebookExportName + "\r\n";
postdata += sRow + "\r\n" + "Content-Disposition: form-data; name=" + "\"PhonebookExport\"" + "\r\n" + "\r\n" + "\r\n" + sRow + "--" + "\r\n";
Post-File.txt = postdata
Code:
wget --post-file="Post-File.txt" --header="HOST: fritz.box" --header="Content-Type: multipart/form-data; boundary="+sRow "http://fritz.box/cgi-bin/firmwarecfg" -O "Telefonbuch.xml"
Mit Curl wäre es einfacher siehe Beispiel hier: Konfiguration der AVM FRITZ!Box 7390 per wget/curl Script sichern
fritzbox_phonebook_export.php
Zuletzt bearbeitet: