Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Autor | Správa |
---|
Registrovaný: 04.11.06 Prihlásený: 28.12.09 Príspevky: 107 Témy: 12 | 12 |
Caute, potreboval by som pomoct.. mam JAVA applet, v ktorom pouzivam sockety na komunikaciu s HTTP.. no a potrebujem vediet, ako mam "zostavit" HTTP poziadavku na server tak, ako by to spravil prehliadac, keby posielal serveru nejaky subor cez POST... nieco v tvare <input type="file" name="subor">.. skusal som hladat na googli ale jedina uzitocna vec co mi na toto nasiel tak bola kompletna RFC specifikacia HTTP protokolu na desiatky stran.. no a ja potrebujem akurat tento jeden navod...
Dufam ze som to napisal zrozumitelne
|
|
Registrovaný: 28.04.07 Prihlásený: 03.11.09 Príspevky: 133 Témy: 1 | 1 |
Doporučujem ti skúsiť Firefox a rozšírenie Live HTTP headers, vďaka nemu môžeš sledovať komunikáciu medzi browserom a serverom.
Vyzeralo by to asi takto:
Kód: POST /test/up.php HTTP/1.1 Host: localhost:80 Content-Type: multipart/form-data; boundary=---------------------------9759188801937 Content-Length: 205 -----------------------------9759188801937 Content-Disposition: form-data; name="upfile"; filename="upsubor.txt" Content-Type: text/plain
bla bla line2 -----------------------------9759188801937--
Odosielal sa textový súbor s obsahom "bla bla\13\10line 2", boundary je deliaca hranica ohraničujúca súbor spolu s jeho hlavičkou.
Lepší obraz získaš práve použitím Live http, headery sú ľahko pochopiteľné.
|
|
Registrovaný: 04.11.06 Prihlásený: 28.12.09 Príspevky: 107 Témy: 12 | 12 |
Hmm mam tomu rozumiet tak ze tento riadok:
Content-Type: multipart/form-data; boundary=---------------------------9759188801937
urcuje serveru hranicu formulara alebo coho? Namiesto toho si tam ale mozem dat co chcem nie?
No a potom uz len napisem toto:
Content-Disposition: form-data; name="upfile"; filename="upsubor.txt"
Content-Type: text/plain
a potom pole bytov co bude obsah suboru? a nakoniec zas tu hranicu?
PS: text/plain sa tam nehodi, ja potrebujem prenasat subory v binarnom formate.. ako sa to zmeni?
|
|
Registrovaný: 28.04.07 Prihlásený: 03.11.09 Príspevky: 133 Témy: 1 | 1 |
Citácia: Hmm mam tomu rozumiet tak ze tento riadok: Content-Type: multipart/form-data; boundary=---------------------------9759188801937 urcuje serveru hranicu formulara alebo coho? Namiesto toho si tam ale mozem dat co chcem nie? Boundary oddeľuje jednotlivé časti pri požiadavkoch, ktoré kombinujú text a iné dáta (obrázky, súbory...). Môže to byť ľubovoľný reťazec, ktorý sa však nenachádza v dátach, ktoré ohraničuje. Citácia: No a potom uz len napisem toto: Content-Disposition: form-data; name="upfile"; filename="upsubor.txt" Content-Type: text/plain a potom pole bytov co bude obsah suboru? a nakoniec zas tu hranicu? áno Citácia: PS: text/plain sa tam nehodi, ja potrebujem prenasat subory v binarnom formate.. ako sa to zmeni? Nastavíš content-type na inú hodnotu. Prakticky na tom nezáleží, dôležité je, aby skript, čo spracúva dáta, vedel o aké dáta ide. Potom nasledujú binárne dáta, ukončené hranicou. Citácia: skusal som hladat na googli ale jedina uzitocna vec co mi na toto nasiel tak bola kompletna RFC specifikacia HTTP protokolu na desiatky stran
RFC 1867 - Form-based File Upload in HTML
|
|
Registrovaný: 04.11.06 Prihlásený: 28.12.09 Príspevky: 107 Témy: 12 | 12 |
No nejak to nechce zobrat..
Toto je vystup:
Kód: "C:\Program Files\Java\jdk1.6.0_02\bin\javaw" -classpath "C:\Documents and Settings\Michal\Desktop\upload\classes;C:\Program Files\Java\jdk1.6.0_02\lib\tools.jar;C:\Program Files\Java\jdk1.6.0_02\lib\htmlconverter.jar;C:\Program Files\Java\jdk1.6.0_02\lib\jconsole.jar;C:\Program Files\Java\jdk1.6.0_02\lib\dt.jar;C:\Program Files\Java\jdk1.6.0_02\demo\scripting\jconsole-plugin\jconsole-plugin.jar;C:\Program Files\Java\jdk1.6.0_02\demo\jfc\Java2D\Java2Demo.jar;C:\Program Files\Java\jdk1.6.0_02\demo\jfc\CodePointIM\CodePointIM.jar;C:\Program Files\Java\jdk1.6.0_02\demo\plugin\jfc\CodePointIM\CodePointIM.jar;C:\Program Files\Java\jdk1.6.0_02\demo\plugin\jfc\Java2D\Java2Demo.jar;C:\Program Files\Java\jdk1.6.0_02\sample\jnlp\servlet\jnlp.jar;C:\Program Files\Java\jdk1.6.0_02\sample\jnlp\servlet\jnlp-servlet.jar;C:\Program Files\Java\jdk1.6.0_02\sample\jnlp\servlet\jardiff.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\rt.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\im\thaiim.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\im\indicim.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.6.0_02\jre\lib\jce.jar;C:\Program Files\JBuilder\lib\jbuilder.jar;C:\Program Files\JBuilder\lib\primetime.jar" com.borland.jbuilder.runtime.applet.AppletTestbed 400 300 upload.Main Query iduci na server:
POST /!pages/upload.php HTTP/1.1 HOST: www.austyn.sk Content-Type: multipart/form-data; boundary=---------------------------9759188801937 Content-Length: 205 -----------------------------9759188801937 Content-Disposition: form-data; name="subor"; filename="RCT3.lnk" Content-Type: application/octet-stream adhfgafkashfkjahfkahafaksjfhakjfhahjkfajkfa -----------------------------9759188801937
HTTP/1.1 400 Bad Request Date: Sat, 15 Sep 2007 11:25:34 GMT Server: Apache/2.0.55 (Ubuntu) PHP/5.1.2 mod_ssl/2.0.55 OpenSSL/0.9.8a Content-Length: 334 Connection: close Content-Type: text/html; charset=iso-8859-1
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>400 Bad Request</title> </head><body> <h1>Bad Request</h1> <p>Your browser sent a request that this server could not understand.<br /> Request header field is missing ':' separator.<br /> <pre> -----------------------------9759188801937</pre> </p> </body></html>
|
|
Registrovaný: 28.04.07 Prihlásený: 03.11.09 Príspevky: 133 Témy: 1 | 1 |
za ukončovacím boundary majú byť dve pomlčky: Kód: -----------------------------9759188801937--
|
|
Registrovaný: 04.11.06 Prihlásený: 28.12.09 Príspevky: 107 Témy: 12 | 12 |
Trochu som to upravil, teraz to vyzera takto:
Kód: req = "POST /!pages/upload.php HTTP/1.1\r\n"; req += "Host: www.austyn.sk\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; sk; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6\r\n"; req += "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n"; req += "Accept-Language: sk,cs;q=0.8,en-us;q=0.5,en;q=0.3\r\n"; req += "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n"; req += "Keep-Alive: 300\r\n"; req += "Connection: keep-alive\r\n"; req += "Referer: http://www.upnito.sk/\r\n"; req += "Content-Type: multipart/form-data; boundary=gGg\r\n"; req += "Content-Length: 500\r\n"; req += "--gGg\r\n"; req += "Content-Disposition: form-data; name=\"subor\"; filename=\"msvcp80.txt\"\r\n"; req += "Content-Type: text/plain\r\n\n"; req += "abcdef\r\n"; req += "--gGg--\r\n\r\n";
Odpoved: Kód: <p>Your browser sent a request that this server could not understand.<br /> Request header field is missing ':' separator.<br /> <pre> --gGg</pre> </p>
Z coho vyplyva, ze mu vadi ten zaciatocny boundary.. To ale nechapem, lebo ked si to pozriem v FireFoxe cez ten doplnok tak ten zaciatocny boundary tam je... Retazec gGg neni obsiahnuty nikde (vlastne vsak to aj vidis, zatial tam neposielam obsah suboru ale len konstantny text..
|
|
Registrovaný: 28.04.07 Prihlásený: 03.11.09 Príspevky: 133 Témy: 1 | 1 |
Kód: req += "Content-Type: text/plain\r\n\n";
jedno \n navyše
|
|
Registrovaný: 28.04.07 Prihlásený: 03.11.09 Príspevky: 133 Témy: 1 | 1 |
imcold píše: za ukončovacím boundary majú byť dve pomlčky: Kód: -----------------------------9759188801937-- Aby som to uviedol na pravú mieru - dve pomlčky majú byť aj pred boundary. Chyba mojej nepozornosti... každopádne v rfc je to spávne: Kód: Content-type: multipart/form-data, boundary=AaB03x --AaB03x content-disposition: form-data; name="pics"; filename="file1.txt" Content-Type: text/plain
... contents of file1.txt ... --AaB03x--
|
|
Registrovaný: 04.11.06 Prihlásený: 28.12.09 Príspevky: 107 Témy: 12 | 12 |
no mam tam 2 pomlcky.. vsimni si ze Boundary=gGg, potom tam je --gGg a text a nakoniec --gGg--.. ako vidis v odpovedi servra, asi mu vadi to prve --gGg nejakym sposobom, pretoze k tomu text-plain sa uz ani nedostane, a to dalsie \n som tam dal preto, lebo vsade (v live http headers aj v tom rfc je medzi text-plain a samotnym obsahom jeden riadok prazdny.. no ale nefungovalo to ani ked som tam ten prazdny riadok nedal. skusim tvoju citaciu z rfc totalne copypastnut bez jedinej zmeny (akurat filename musi ist do jedneho riadku s content-disposition takze to zmenim) ze ci mi to server zoberie..
|
|
Registrovaný: 28.04.07 Prihlásený: 03.11.09 Príspevky: 133 Témy: 1 | 1 |
Ten prázdny riadok má byť \r\n, nie len \n (viď rfc). Prázdny riadok má byť aj medzi request headerom a boundary
Kód: req += "Content-Length: 500\r\n"; req += "\r\n" req += "--gGg\r\n";
Neviem síce otestovať tvoj kód, ale napísal som php skript, s ktorým si môžeš porovnať svoj request header, potažmo výstup: upload.php.
|
|
Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Assembler, C, C++, Pascal, Java | 3 | 745 | 15.01.2011 15:45 juho | | v Assembler, C, C++, Pascal, Java | 0 | 336 | 19.04.2010 23:27 mysacek | | v Webhosting a servery | 6 | 568 | 29.05.2017 12:55 McLovin | | v Technológia .NET | 1 | 1745 | 11.07.2008 13:31 ProJee | | v Siete | 6 | 879 | 09.03.2011 8:32 johny29 | | v Redakčné systémy | 1 | 389 | 26.04.2014 19:29 chrono | | v PHP, ASP | 2 | 637 | 20.03.2009 19:02 snake2 | | v Ostatné | 2 | 605 | 06.06.2009 23:39 br4n0 | | v PHP, ASP | 3 | 457 | 28.03.2013 0:07 Merlin_sk | | v Assembler, C, C++, Pascal, Java | 2 | 392 | 30.09.2013 14:03 Unlink | | v Mobilné zariadenia | 0 | 833 | 19.04.2007 20:54 ma®tin | | v Assembler, C, C++, Pascal, Java | 7 | 314 | 16.04.2013 19:11 XOLOO | | v Ostatné programy | 2 | 553 | 27.10.2014 18:56 mag19981 | | v JavaScript, VBScript, Ajax | 0 | 351 | 08.12.2011 17:55 juro41 | | v PHP, ASP | 8 | 669 | 27.09.2007 19:57 qacer | | v Assembler, C, C++, Pascal, Java | 1 | 904 | 02.04.2014 12:41 XOLOO |
|