私はJTextPaneを使用して私のウェブページではないデータを表示しています。そのため、私はその内容を制御できません。ユーザーにはログインする必要があるので、URLConnectionsを使用してそのWebページに接続し、URLConnectionでクッキーを使用してデータを取得します。それはうまく動作します。ただし、このデータをコンテンツタイプがtext/htmlに設定されたJTextPaneに配置すると、アップロードされた画像を取得するためにセッションIDとアイテムを持つCookieが必要になるため、画像は表示されません。Java JTextPane HTMLイメージクッキー
JTextPaneを作成する方法はありますか(HTMLを表示するjdk内の他のものを使用することはできますが)私のクッキーを使用しますか?
ありがとうございました。
私はリンクリストで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);
}
}
そして私はまた私がtextpaneにプラグイン文字列を与える、unneccesary 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);
私のコードから関連するスニペットを投稿しました。必要なビットだけを残すために余分なHTMLを取り除く必要があります。 –