Boa tarde galera, estou com dificuldades em reenderizar uma pagina em html. Preciso criar um navegador bem simples, onde eu informo uma URL e ele mostra a página, não precisa fazer mais nada, só mostrar a pagina mesmo. A primeira parte do trabalho eu consegui fazer, que era mostrar o código HTML da pagina, na segunda parte, eu preciso pegar esse códido e reenderizar a página web, e é nessa parte que to com dificuldade. Meu professor disse que existe uma biblioteca em java que faz isso, mas nem eu e nem meus colegas conseguimos encontrar nada sobre essa tal biblioteca. Se alguem puder me ajudar, ficarei muito grato!
A primeira parte do trabalho é essa:
package iftm;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JTextPane;
import javax.swing.JScrollPane;
@SuppressWarnings({ “unused”, “serial” })
public class Janela extends JFrame {
private JPanel contentPane;
private JTextField txtLink;
private JLabel lblUrl;
private JButton btnBuscar;
private JTextPane textPane;
private static String hostname;
private String sentence;
private String retorno, resto = "";
private JScrollPane scrollPane;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Janela frame = new Janela();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Janela() {
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 900, 600);
setTitle("Cristovão Colombo");
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
criaComponentes();
criaAcoes();
}
private void criaComponentes() {
lblUrl = new JLabel("URL:");
lblUrl.setBounds(12, 12, 43, 15);
contentPane.add(lblUrl);
txtLink = new JTextField();
txtLink.setBounds(51, 10, 704, 19);
contentPane.add(txtLink);
txtLink.setColumns(10);
btnBuscar = new JButton("Buscar");
btnBuscar.setBounds(771, 7, 117, 25);
contentPane.add(btnBuscar);
scrollPane = new JScrollPane();
scrollPane.setBounds(12, 39, 876, 522);
contentPane.add(scrollPane);
textPane = new JTextPane();
scrollPane.setViewportView(textPane);
}
private void criaAcoes() {
btnBuscar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textPane.setText(null);
String url = txtLink.getText();
String separarlink[] = url.split("/");
hostname = (separarlink[0]);
for (int i = 1; i < separarlink.length; i++) {
resto += "/" + separarlink[i];
}
sentence = "GET /" + resto + " HTTP/1.1";
Cliente();
}
});
}
public void Cliente() {
try {
Socket clientSocket = new Socket(hostname, 80);
DataOutputStream outToSever = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter mostrar = new PrintWriter(clientSocket.getOutputStream());
mostrar.println();
mostrar.println("HOST:" + hostname);
mostrar.println("");
mostrar.flush();
BufferedReader ler = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
while ((retorno = ler.readLine()) != null) {
textPane.setText(textPane.getText() + "" + retorno + "\n");
textPane.repaint();
}
// Fecha a conexão
clientSocket.close();
} catch (IOException e) {
System.out.println("Erro " + e);
}
}
}