Как скачивать странички из интернета через Java?
Как получить доступ к интернету из обычного Java приложения? Хорошо бы, чтобы оно работало под Windows и Linux. Может, где исходники можно посмотреть, чтобы понять идею.
import java.io.*;
class localURL
{
public static void main(String args[]) throws Exception
{
int c;
URL hp = new URL("http", "www.yandex.ru", 80, "/");
URLConnection hpCon = hp.openConnection();
File file = new File("out.txt");
OutputStream os = new FileOutputStream( file );
PrintStream ps = new PrintStream( os );
ps.println("Date: " + hpCon.getDate());
ps.println("Type: " + hpCon.getContentType());
ps.println("Exp: " + hpCon.getExpiration());
ps.println("Last M: " + hpCon.getLastModified());
ps.println("Length: " + hpCon.getContentLength());
if( hpCon.getContentLength() > 0 )
{
ps.println("=== Content ===");
InputStream input = hpCon.getInputStream();
int i=hpCon.getContentLength();
while(((c = input.read()) != -1) && (--i > 0))
{
ps.print((char) c);
}
input.close();
}
else
{
ps.println("No Content Available");
}
}
}
Народ, почему в этом исходнике свойства файла выводятся ( например, text/html ), а контент получить не удается?
А такой код работает:
import java.net.*;
import java.io.*;
class localURL
{
public static void main(String args[]) throws Exception
{
int c;
URL hp = new URL("http", "www.ya.ru", 80, "/");
URLConnection hpCon = hp.openConnection();
File file = new File("out.txt");
OutputStream os = new FileOutputStream( file );
PrintStream ps = new PrintStream( os );
ps.println("Date: " + hpCon.getDate());
ps.println("Type: " + hpCon.getContentType());
ps.println("Exp: " + hpCon.getExpiration());
ps.println("Last M: " + hpCon.getLastModified());
ps.println("Length: " + hpCon.getContentLength());
/*if( hpCon.getContentLength() > 0 )
{*/
ps.println("=== Content ===");
InputStream input = hpCon.getInputStream();
//int i=hpCon.getContentLength();
while((c = input.read()) != -1)
{
ps.print((char) c);
}
input.close();
/*}
else
{
ps.println("No Content Available");
}*/
}
}
Так как метод hpCon.getContentLength() возвращает
-1, если длинна контента неизвестна, а не то что контента вообще нет.