Stream

BMo

Mitglied
Hi, warum kann ich den Stream ausgeben,
aber nicht als String speichern?

Code:
import java.net.*; 
import java.util.Scanner; 
import java.io.*; 
 
public class BasicAuth 
{ 
  public static InputStream openAuthorizedStream( 
      URL url, String user, String passwd ) throws IOException 
  { 
    String s = user + ":" + passwd; 
 
    String base64 = "Basic " + 
           new sun.misc.BASE64Encoder().encode( s.getBytes() ); 
 
    URLConnection conn = url.openConnection(); 
    conn.setRequestProperty( "Authorization", base64 ); 
    conn.connect(); 
 
    return conn.getInputStream(); 
  } 
 
  public static void main( String[] args ) throws IOException
  {  
	URL url = new URL( "http://www.gastrob.de/Subway......" ); 

    InputStream stream = openAuthorizedStream( url, "****", "****" ); 

//GEHT!
    System.out.println( new Scanner(stream).useDelimiter("\\Z").next().toString() );
//GEHT nicht!
    String data = new Scanner(stream).useDelimiter("\\Z").next().toString();
    
    
    
    String[] dataComponents = data.split("|");
    	for (int i = 0; i < dataComponents.length; i++) {
    System.out.println(dataComponents[i]);
    }
  }
  
}
 
Hallo,

was gibt es denn für eine Fehler?
Bitte nicht nur sagen "geht nicht". Etwas detailiertere Fehlermeldungn bitte.
 
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at BasicAuth.main(BasicAuth.java:32)
 
Hallo,

das ganze liegt an deinem Stream.
Code:
System.out.println( new Scanner(stream).useDelimiter("\\Z").next().toString() );
Nach dieser Stelle ist dein Stream schon am "Ende" angekommen. Dann übergibst du ihn nochmal und da dann aus dem Stream nichts mehr gelesen werden kann, kannst du mir next() nichts mehr bekommen und das wirft dann die Exception.

Wenn du es vorher nochmal mit System.out.println() ausgeben möchtest solltest du es so machen.
Code:
String data = new Scanner(stream).useDelimiter("\\Z").next().toString();
System.out.println( data );


MFG

zEriX
 
Zurück