Avatar billede jink Nybegynder
21. juni 2002 - 15:03 Der er 3 kommentarer og
1 løsning

Billede igennem URLConnection

Hej Allesammen,

Jeg sidder med et lille problem angående at modtage /afkode minen data
korrekt som bliver sendt til mig, som hvor jeg bruger en UrlConection. Jeg
viser lige lidt af koden :
------------------------------
BufferedReader in = null;
try
  {
  in = new BufferedReader(new
      InputStreamReader(connection.getInputStream()));
  }
  catch (FileNotFoundException exception)
  {
  InputStream err = ((HttpURLConnection)connection).getErrorStream();
    if (err == null) throw exception;
    in = new BufferedReader(new InputStreamReader(err));
  }
      String line;

        while ((line = in.readLine()) != null)
        {  System.out.println(line + "\n");

        }
        if (line != null) System.out.println(". . .");

  in.close();
----------------------------

Alt dette fungerer hvis det der kommer ind er en html side, men i dette
tilfælde er det der kommer et billede, og her kommer outputet som jeg
skriver ud, til at se forkert ud. Billedet bliver modtaget korrekt ifølge en
sniffer hvor jeg har opsnappet de pakker der er sendt til mig.

Billedet er iøvrigt et jpeg billede og bliver konstrueret af et cgi script
på den server det kommer fra.

Jeg har kigget lidt om det er muligt at bruge en ImageReader, som skulle
være muligt i jdk 1.4, men uden held.

Er der nogen der kan hjælpe ?

På forhånd tak.
Avatar billede disky Nybegynder
21. juni 2002 - 16:11 #1
du kan ikke læse en binær fil med 'readLine()' metoden

Du skal læse dem bytevis istedet.
Avatar billede soelvpil Nybegynder
21. juni 2002 - 16:52 #2
Du bruger også en Reader, d.v.s. du konverterer fra bytes til karakterer. Brug i stedet noget i retningen af

in = new BufferedInputStream(connection.getInputStream());

while ((byte = in.read()) != -1)
{
  System.out.print(byte);
}
Avatar billede jink Nybegynder
22. juni 2002 - 15:05 #3
in.read(), returnerer bare antal om der er læst noget eller ej, jeg har jo brug for den data som ligger i denne inputstream.
Avatar billede disky Nybegynder
22. juni 2002 - 15:09 #4
jink:
Du skulle tage og kigge lidt på API'en

der er texten fra BufferedInputStream read() metode:
Returns:
the next byte of data, or -1 if the end of the stream is reached.

Altså den læser 1 byte fra den inputstream, det er lige den du skal bruge.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester