[java] automatisch forms via CGI formulier in laten vullen

Pagina: 1
Acties:

  • Red devil
  • Registratie: December 1999
  • Laatst online: 16:53
Geachte tweakers,

In mijn java applicatie wil ik web logos laten maken van bepaalde strings (dna sequenties). Dit middels de online tool weblogo. Ik heb dezelfde tools ook op mijn eigen server geinstalleerd, zodat ik de server van berkeley niet hoef te belasten.
Kan iemand me een hint geven wat voor java applicatie/tutorial ik zou kunnen gebruiken?
Er komt een plaatje terug die ik dan vervolgens van de webserver kan slurpen om die lokaal op te slaan.
Via LiveHTTPheaders van Mozilla kan ik aardig volgen wat er qua verkeer tussen de client en server gaande is, de vraag is nu hoe ik dit in mijn app kan verwerken.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14:58
Voor zover ik kan zien is het plaatje direct het antwoord op de POST request. Het is dus een kwestie van een TCP-verbinding maken met de server, een correcte HTTP-request sturen, en de HTTP-response parsen (de body is het plaatje, wat je in Java moet zien te converteren naar een Image).

Dit zou je nog wel met alleen een TCP Socket kunnen doen, en dan gewoon een goede request erin gooien. (Met live-headers en de source van het HTML formulier kun je wel zien hoe zo'n request eruit ziet). Om je het genereren/parsen van HTTP headers en dergelijke te besparen, kun je Java's HttpURLConnection gebruiken.

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 17:46

Robtimus

me Robtimus no like you

Als aanvulling, met de volgende code kun je een POST request doen naar een URL:
Java:
1
2
3
4
5
6
7
8
9
URL url = new URL("http://weblogo.berkeley.edu/logo.cgi");
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
PrintStream ps = new PrintStream(url.getOutputStream());
ps.println("a=1&b=2&c=3");
ps.flush();
InputStream is = url.getInputStream();
// doe nu wat je moet doen met is

More than meets the eye
There is no I in TEAM... but there is ME
system specs


  • Red devil
  • Registratie: December 1999
  • Laatst online: 16:53
thanks all, even in het nieuwe jaar proberen :)
Ook heb ik veel goede dingen over het commons pakketje van jakarta gehoord (httpclient)

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Zoek ff naar httpunit

  • Red devil
  • Registratie: December 1999
  • Laatst online: 16:53
Ik heb het gevonden:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
try {
            InputStream serverInput = ClientHttpRequest.post(
                    new java.net.URL("http://weblogo.berkeley.edu/logo.cgi"), 
                    new Object[] {
                        "sequence", getSequences(),
                        en een hele zooi andere opties
                    });
            BufferedReader in = new BufferedReader(new InputStreamReader(serverInput));
            
            String inputLine;

            FileOutputStream out = new FileOutputStream("bla.png");
            final int BUFFER_SIZE = 1 << 10 << 3; //8KiB buffer
            byte[] buffer = new byte[BUFFER_SIZE];
            int bytesRead = -1;
            
            while ((bytesRead = serverInput.read(buffer)) > -1) {
                 out.write(buffer, 0, bytesRead);
            }
            in.close();
            out.close();


Code mbv Vlad.
Het werkte ook nog eens in 1 keer _/-\o_
Pagina: 1