appengine-ja:GAE for Javaでしたらばのスレッド一覧ファイルsubject.txtを読み込む

取得するクラス

import java.util.*;
import java.io.*;
import java.net.*;

/* Sample
* List<String> lb = new URLWalker().getURL("http://example.com/page","EUC-JP","UTF-8");
* */
public class URLWalker {

List<String> ustrb = new ArrayList<String>();
String src_encoding="ISO_8859_1";
String out_encoding="utf-8";

public List<String> getURL(String urlstr){
return getURL(urlstr,src_encoding,out_encoding);
}

public List<String> getURL(String urlstr,String src_encoding){
return getURL(urlstr,src_encoding,out_encoding);
}

public List<String> getURL(String urlstr, String src_encoding,String out_encoding){

try {
URL url = new URL(urlstr);
BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(),src_encoding));
String line;

while ((line = reader.readLine()) != null) {
//ustrb.add(new String(line.getBytes(out_encoding)));// *これだとダメだった
ustrb.add(line);//普通にaddする。
}
reader.close();

} catch (MalformedURLException e) {
e.printStackTrace();
// ...
} catch (IOException e) {
e.printStackTrace();
// ...
}
return ustrb;

}
}


JSP側


<%@ page contentType="text/html;charset=utf-8" pageEncoding="utf-8"%>
<%@ page import="java.util.*" %>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%
String yaraline;
String urls= "http://jbbs.livedoor.jp/otaku/14429/subject.txt";
List<String> subjs = new URLWalker().getURL(urls,"EUC-JP");
for (int i=0;i<=20;i++){
yaraline = subjs.get(i);
out.println("<a href=¥"http://jbbs.livedoor.jp/bbs/read.cgi/otaku/14429/"+
yaraline.substring(0, 10)
+"/l50"
+"¥">"
+yaraline.split(",")[1]
+"</a>");
out.println("<br />");
}
%>




URLの取得はHorroRSS使ってRSSからやってもよかったんだけど
ちょっと別のことをしたかったのでsubject.txtを読み込むようにした。

monazilla.org::したらばの仕様 より

【スレッド一覧】
・スレッド一覧の設置場所は次の通りです。
http://jbbs.livedoor.jp/[カテゴリ]/[掲示板番号]/subject.txt

・スレッド一覧の内容は次の通りです。
[スレッド番号].cgi,[スレッドタイトル](レス数)

・内容はEUCコードで記述されています。


自分的にハマったところ:
上のとおりこのsubject.txtファイルはEUCなのでInputStreamReader(java.net.URL#openStream()、文字コード)で
一行ずつ取り出そうとしてline.getBytes(out_encoding)とUTF-8してやると、App Engine上で必ず化ける
��開発AppServerや非GAE環境では文字化けしない)動きになっていたのでハマった。

JUGEMテーマ:インターネット



コメント

このブログの人気の投稿

4.3.0 Temporary Lookup Failureでドツボってた話

tomcat起動時の環境変数でJRE_HOMEを指定するときに

何が得られて何処へ向かうかだけを問うべき