Я использую JTextPane для отображения данных с веб-страницы, которая не является моей, поэтому я не могу контролировать ее содержимое. Для этого требуется, чтобы пользователь вошел в систему, поэтому я использую URLConnections для подключения к этой веб-странице и использования файлов cookie в URLConnection для извлечения данных. Это прекрасно работает. Однако, когда я помещаю эти данные в JTextPane с типом контента, установленным в text/html, изображения не отображаются, так как они требуют, чтобы эти куки с идентификатором сеанса и вещами, которые нужно отправить, чтобы получить загруженные изображения.Java JTextPane HTML-файлы cookie
Есть ли способ сделать JTextPane (хотя я могу использовать что-либо еще в jdk, который отображает html), используя мои файлы cookie?
Спасибо.
хранить кук в связанном списке:
loadText = "Logging in...";
url = new URL("http://www.example.com/login.php");
connection = url.openConnection();
connection.setDoOutput(true);
OutputStreamWriter out = new OutputStreamWriter(
connection.getOutputStream());
out.write("username=" + URLEncoder.encode(username, "UTF-8")
+ "&password=" + URLEncoder.encode(password, "UTF-8")
+ "&testcookies=1");
out.flush();
out.close();
List<String> cookies = new LinkedList<String>();
for (int i = 1; (headerName = connection.getHeaderFieldKey(i)) != null; i++) {
if (headerName.equals("Set-Cookie")) {
String cookie = connection.getHeaderField(i);
cookie = cookie.substring(0, cookie.indexOf(";"));
cookies.add(cookie);
}
}
И мне также нужно стирает ненужную HTML, который дает мне строку я заткнуть в textpane:
String p1 = rawPage.split("<div id=\"contentstart\">")[1]
.split("</div><!--id='contentstart'-->")[0];
p1 = p1.replaceAll("<p><strong></strong></p>", "");
p1 = p1.replaceAll("<p></p>", "");
parsed = true;
JTextPane tp = new JTextPane();
tp.setEditable(false);
JScrollPane js = new JScrollPane();
js.getViewport().add(tp);
js.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
getContentPane().add(js);
js.setSize(640, 480);
tp.setContentType("text/html");
tp.setText(p1);
Я разместил соответствующие снайперы из своего кода - мне нужно снять лишний HTML-код, чтобы оставить только тот бит, который мне нужен. – 2010-12-06 18:06:30