Я использую JTextPane для отображения данных с веб-страницы, которая не принадлежит мне, поэтому я не могу контролировать ее содержимое. Для этого требуется, чтобы пользователь вошел в систему, поэтому я использую URLConnections для подключения к этой веб-странице и использую файлы cookie в URLConnection для получения данных. Это отлично работает. Однако, когда я помещаю эти данные в JTextPane с типом содержимого, установленным в text / html, изображения не отображаются, так как они требуют, чтобы эти куки с идентификатором сеанса и материалом были отправлены для получения загруженных изображений.
Можно ли как-нибудь заставить 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, который дает мне строку, которую я вставляю в текстовое поле:
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);