Ajatellaan, että netissä on lomake, jossa on pari tekstikenttää ja Submit-nappi. Onko mitenkään mahdollista tehdä Javalla ohjelmaa, joka täyttää lomakkeen kentät ja lähettää lomakkeen?
Lomakkeen lähetys Javalla?
Javanainen
4482
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 4
Vanhimmat
on mahdollista.
Voisitko vielä kertoa, että miten kyseinen asia tehdään? Linkkejä, koodia?
turha keksiä pyörää uudestaan, joten etsi netistä joku valmiiksi koodattu paketti, missä on luokkia tuota varten.
Javasta löytyy itsestäänkin, mutta ne on aika karuja.
Googleen vaan java httpclient
Toinen kätevä ohjelma on HTTPLook. Sen saa imuroitua netistä kans ilmaseksi. Sen laitat päälle ja sitten selaimella teet kyseisellä sivulla ne asiat mitä haluat tehdä. Sitten httplookin lokista katsot, että mitä tietoja lähti sun selaimelta ja mitä palvelin vastas ja antoiko se cookien yms yms
No sitten sulla onkin kaikki mitä tarvitset. Voit esimerkiksi tehdä ohjelman joka kirjautu city.fi sisään ja yrittää 3 kertaa sekunnisas jollekin kanavalle kunnes pääsee sisään. Sen jälkeen se avaa sulle selaimelle sen chatin. Voi istua ite vaikka paskalla sillä aikaa, kun sun ohjelma jonottaa kanavalle.
Itsellä on käytössä Jakarta httpclient luokat.
Niillä homma menee about näin.
public String sessionkey ="";
public static Header hederi;
httpclient = new HttpClient();
httpclient.setTimeout(30000);
httpclient.getHostConfiguration().setHost("www.city.fi",80);
//Sitten logataan cityyn.
//Luodaan login-formin tiedot
NameValuePair [] nvpairslogin = new NameValuePair[2];
nvpairslogin[0] = new NameValuePair("msisdn","0401233123");
nvpairslogin[1] = new NameValuePair("password","salasana");
//Lähetetään "formi" cityyn.
PostMethod post = new PostMethod("/login.php");
post.setRequestBody(nvpairslogin);
int result = httpclient.executeMethod(post);
//Otetaan vastauksen header talteen ja siitä uudelleenohjauksen tiedot
hederi = post.getResponseHeader("Location");
redirect = hederi.getValue();
//Cityn luoma sessionkey talteen sessionkey = redirect.substring(8,40);
post.releaseConnection();
GetMethod loginget = new GetMethod("/index.php" redirect);
httpclient.executeMethod(loginget);
loginget.releaseConnection();
Nyt city luulee, että tulit selaimella sisään ja kirjauduitkin vielä. Nyt voisit hakea vaikka mailisi automaattisesti omalle koneelle
Mikäli voidaan käyttää GET metodia, tekisin mielummin näin, toi toinen tapa vaikuttaa hankalata.
Etsi siitä html koodista ne parametrit mitä se formi lähettää, ja sit vaan:
URL url = new URL("http://www.google.com/search?hl=en&lr=&ie=UTF-8&oe=UTF-8&q=jipii&btnG=Search");
Toi on vaan esimerkki, tyhmä kysely www.google.com:iin.
Sit voit lukea tosta url objektista sen vastauksen jos on tarvetta ja vaikka parsii sen jos on tarvetta.