Привет всем!
Использую следующий код:
try
{
DataScript = new URL( url );
DataScriptConnection = DataScript.openConnection( );
DataScriptConnection.setDoOutput( true );
oScriptStream = new PrintStream( DataScriptConnection
.getOutputStream( ) );
oScriptStream.close( );
iScriptStream = new BufferedReader(
new InputStreamReader( DataScriptConnection
.getInputStream( ) , this.DBCharset ) );
String strPiece = iScriptStream.readLine( );
while ( strPiece != null )
{
strData.add( strPiece );
strPiece = iScriptStream.readLine( );
}
iScriptStream.close( );
} catch ( IOException e )
{
System.out.println( "Problems with url: '" + url + "' - "
+ e.toString( ) );
}
И периодически вылазит исключение "java.io.IOException: Stream closed", из-за которого прога просто не может жить...
Может кто знает причину, или код криво написан???
Сначала ответ на вопрос: все правильно (в общем случае) - что прога может еще сделать, если удаленный сервер оборвал передачу?И несколько замечаний:
1. Зря ты в этом форуме пытаешься получить помощь по Яве, поищи лучше специализированные, например http://www.rsdn.ru/
2. В catch используй e.printStackTrace(), тогда точнее увидишь, в чем ошибка.
3. По коду:>try
>{
> DataScript = new URL( url );
имена переменных в Яве принято писать с маленькой буквы, чтобы от классов отличать> DataScriptConnection = DataScript.openConnection( );
> DataScriptConnection.setDoOutput( true );
> oScriptStream = new PrintStream( DataScriptConnection.getOutputStream( ) );
> oScriptStream.close( );
А это тебе зачем понадобилось? Ты же его сразу закрываешь.> iScriptStream = new BufferedReader(
> new InputStreamReader( DataScriptConnection.getInputStream( ), this.DBCharset ) );
Ты уверен, что метод connect() здесь уже вызван?> String strPiece = iScriptStream.readLine( );
> while ( strPiece != null )
> {
> strData.add( strPiece );
> strPiece = iScriptStream.readLine();
> }Вот так красивей и проще, хотя делает тоже самое:
String strPiece;
while((strPiece = iScriptStream.readLine()) != null) {
strData.add(strPiece);
}