HTTPレスポンスコードを取得する
戻る
■実行結果
*** DEBUG *** in PropertyManager.getInstance() : PropertyManagerがインスタンス化されました!
*** DEBUG *** in PropertyManager.getInstance() : ../../etc/Default.properties の内容を読み取っています
*** DEBUG *** in CookieContainer.getInstance() : CookieContainerがインスタンス化されました!
/// COOKIE FOUND /// in CookieContainer.dump()
hostName = www.doblog.com
URL = http://www.doblog.com/weblog/myblog/14531
cookieInfo = JSESSIONID=BFCC1D157BF42FF17E0C2A4CA2B9E114.sheep; Path=/weblog
[ 1] Date: Fri, 24 Jun 2005 15:37:52 GMT
[ 2] Server: Apache/2.0.50 (Unix) mod_ssl/2.0.50 OpenSSL/0.9.7a mod_jk2/2.0.3-dev
[ 3] Set-Cookie: JSESSIONID=BFCC1D157BF42FF17E0C2A4CA2B9E114.sheep; Path=/weblog
[ 4] Cache-Control: no-cache
[ 5] Pragma: no-cache
[ 6] Expires: Thu, 01 Jan 1970 00:00:00 GMT
[ 7] Content-Type: text/html;charset=UTF-8
[ 8] Keep-Alive: timeout=5, max=100
[ 9] Connection: Keep-Alive
[10] Transfer-Encoding: chunked
RESPONSE_CODE=200
タイトル = Doblog - オクラを育ててみよう♪ -
( 1) http://asistobe851.hp.infoseek.co.jp/public_tec/
( 2) http://asistobe851.hp.infoseek.co.jp/public_tec/CommandInvocation.html
( 3) http://asistobe851.hp.infoseek.co.jp/public_tec/trackbackpinger.html
( 4) http://bellde.gozaru.jp/siso.htm
( 5) http://blog.goo.ne.jp/pink_momonga/c/9e15ac8103423bc28f28642d54c23084
( 6) http://e-28.jp/incp.asp?viewpage=prod/prod/00079&in_cate_no=15
( 7) http://jibun.atmarkit.co.jp/lskill01/rensai/zukail01/zukail01.html
( 8) http://kgarden.hp.infoseek.co.jp/vegeta/okura.html
( 9) http://ocuden.ddo.jp/green/kanyo/aloe/index.html
( 10) http://shippai.jst.go.jp/fkd/Search
( 11) http://soeweb.syr.edu/Faculty/Spector/personal/gumbo.html
( 12) http://www.aloe-seiyaku.co.jp/aloestory/vol7_2.html
( 13) http://www.blog-headline.jp/food/archives/2005/06/post_61.html
( 14) http://www.coffee-jin.jp/sukusuku/
( 15) http://www.doblog.com/
( 16) http://www.doblog.com/img/u14531/FI1483414_0E.png
( 17) http://www.doblog.com/img/u14531/FI1525569_0E.jpg
( 18) http://www.doblog.com/img/u14531/FI1525569_1E.jpg
( 19) http://www.doblog.com/img/u14531/FI1525569_2E.jpg
( 20) http://www.doblog.com/img/u14531/FI1525609_0E.jpg
( 21) http://www.doblog.com/img/u14531/FI1525630_0E.jpg
( 22) http://www.doblog.com/img/u14531/FI1525661_0E.jpg
( 23) http://www.doblog.com/img/u14531/FI1525661_1E.jpg
( 24) http://www.doblog.com/img/u14531/FI1525661_2E.jpg
( 25) http://www.doblog.com/img/u14531/bgthumb/BTH1483414_0B.png
( 26) http://www.doblog.com/img/u14531/bgthumb/BTH1525569_0B.jpg
( 27) http://www.doblog.com/img/u14531/bgthumb/BTH1525569_1B.jpg
( 28) http://www.doblog.com/img/u14531/bgthumb/BTH1525569_2B.jpg
( 29) http://www.doblog.com/img/u14531/bgthumb/BTH1525609_0B.jpg
( 30) http://www.doblog.com/img/u14531/bgthumb/BTH1525630_0B.jpg
( 31) http://www.doblog.com/img/u14531/bgthumb/BTH1525661_0B.jpg
( 32) http://www.doblog.com/img/u14531/bgthumb/BTH1525661_1B.jpg
( 33) http://www.doblog.com/img/u14531/bgthumb/BTH1525661_2B.jpg
( 34) http://www.doblog.com/weblog/RSSServlet?CMD=LATEST&userid=14531&TYPE=ATOM
( 35) http://www.doblog.com/weblog/RSSServlet?CMD=LATEST&userid=14531&TYPE=RSS_0_91
( 36) http://www.doblog.com/weblog/RSSServlet?CMD=LATEST&userid=14531&TYPE=RSS_1_0
( 37) http://www.doblog.com/weblog/RSSServlet?CMD=LATEST&userid=14531&TYPE=RSS_2_0
( 38) http://www.doblog.com/weblog/jsp/faq.jsp
( 39) http://www.doblog.com/weblog/jsp/guide1_01.jsp
( 40) http://www.doblog.com/weblog/jsp/regist001.jsp
( 41) http://www.doblog.com/weblog/jsp/support.jsp
( 42) http://www.doblog.com/weblog/myblog/
( 43) http://www.doblog.com/weblog/myblog/14531
( 44) http://www.doblog.com/weblog/myblog/14531/1295261
( 45) http://www.doblog.com/weblog/myblog/14531/1301872
( 46) http://www.doblog.com/weblog/myblog/14531/1329343
( 47) http://www.doblog.com/weblog/myblog/14531/1403006
( 48) http://www.doblog.com/weblog/myblog/14531/1474716
( 49) http://www.doblog.com/weblog/myblog/14531/1476865
( 50) http://www.doblog.com/weblog/myblog/14531/1483414
( 51) http://www.doblog.com/weblog/myblog/14531/1497021
( 52) http://www.doblog.com/weblog/myblog/14531/1510556
( 53) http://www.doblog.com/weblog/myblog/14531/1514024
( 54) http://www.doblog.com/weblog/myblog/14531/1514034
( 55) http://www.doblog.com/weblog/myblog/14531/1518301
( 56) http://www.doblog.com/weblog/myblog/14531/1518305
( 57) http://www.doblog.com/weblog/myblog/14531/1522919
( 58) http://www.doblog.com/weblog/myblog/14531/1522926
( 59) http://www.doblog.com/weblog/myblog/14531/1525564
( 60) http://www.doblog.com/weblog/myblog/14531/1525569
( 61) http://www.doblog.com/weblog/myblog/14531/1525609
( 62) http://www.doblog.com/weblog/myblog/14531/1525630
( 63) http://www.doblog.com/weblog/myblog/14531/1525661
( 64) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=100314
( 65) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=103902
( 66) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=104749
( 67) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=104750
( 68) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=26776
( 69) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=26777
( 70) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=32269
( 71) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=33727
( 72) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=35149
( 73) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=35150
( 74) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=44151
( 75) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=45684
( 76) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=65525
( 77) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=82386
( 78) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=88173
( 79) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=89252
( 80) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=94331
( 81) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=95283
( 82) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=95716
( 83) http://www.doblog.com/weblog/myblog/14531?STYPE=1&KEY=97917
( 84) http://www.doblog.com/weblog/myblog/14531?YEAR=2004
( 85) http://www.doblog.com/weblog/myblog/14531?YEAR=2005
( 86) http://www.doblog.com/weblog/myblog/14531?YEAR=2035&MONTH=6
( 87) http://www.doblog.com/weblog/myblog/14531?YEAR=2035&MONTH=6&DAY=14
( 88) http://www.doblog.com/weblog/myblog/14531?pageno=2
( 89) http://www.doblog.com/weblog/myblog/20520
( 90) http://www.doblog.com/weblog/myblog/376
( 91) http://www.doblog.com/weblog/myblog/50904
( 92) http://www.doblog.com/weblog/myblog/7160
( 93) http://www.doblog.com/weblog/myblog/8420
( 94) http://www.google.co.jp/search?sourceid=navclient&ie=UTF-8&rls=GGLD,GGLD:2004-46,GGLD:en&q=%E3%83%8F%E3%82%A4%E3%83%9D%E3%83%8D%E3%83%83%E3%82%AF%E3%82%B9%E3%80%80%E3%82%AA%E3%82%AF%E3%83%A9
( 95) http://www.greenfingers.com/
( 96) http://www.hottolink.com/ds/doblog/download/download.asp
( 97) http://www.naranougi.jp/kateisaien-point/yasai/okura.htm
( 98) http://www.sekine-lab.ei.tuat.ac.jp/~kanamaru/Chaos/
( 99) http://www2.odn.ne.jp/shokuzai/oishii.htm
::::::::::::::
URLContent.java
::::::::::::::
package IntelligentSpider;
import java.util.*;
import java.net.*;
import java.io.*;
/**
$Id: ResponseCode.html,v 1.1 2009/06/22 16:11:54 kishi Exp kishi $
@author KISHI Yasuhiro
*/
public class URLContent extends AbstractContent {
/** 処理対象URL */
private URL url;
/** コネクション */
private HttpURLConnection connection = null;
/** レスポンスヘッダのリスト */
private List responseHeaders = null;
/** プロパティ */
private Properties properties;
/** レスポンスコード */
private int responseCode;
// コンストラクタ
public URLContent( String urlString, String propFileName ) throws Exception {
try {
url = new URL( urlString );
loadProperties( propFileName );
retrieve();
parse();
} catch ( Exception e ) {
throw e;
}
}
/** プロパティ情報を格納するオブジェクトを取得する */
public Properties getProperties() {
return properties;
}
/**
* プロパティファイルを読み込む
*/
private void loadProperties( String propFileName ) throws Exception {
properties = PropertyManager.getInstance( propFileName );
}
/** コネクションを取得する */
public HttpURLConnection getConnection() {
return connection;
}
/**
* コネクションを設定する
*/
private void setConnection() throws Exception {
try {
connection = ( HttpURLConnection ) url.openConnection(); // HttpURLConnectionクラスにキャストする必要あり
} catch ( Exception e ) {
throw e;
}
}
/**
* コネクションをクローズする
*/
private void closeConnection() throws Exception {
// レスポンスコードを取得する
responseCode = connection.getResponseCode();
connection.disconnect();
connection = null;
}
/** レスポンスヘッダのリストを返す */
public List getResponseHeaders() {
return responseHeaders;
}
/** レスポンスヘッダを取得する */
private void setResponseHeader() throws Exception {
responseHeaders = ( new ResponseHeaderObtainer( connection ) ).getHeaders();
}
/** レスポンスボディを取得する */
private void setResponseBody() throws Exception {
String encoding = properties.getProperty( "IS.encoding" );
bodyAsString = ( new ResponseBodyObtainer( connection, encoding ) ).getBody();
}
/**
* コンテンツのボディを取得する
*/
public void retrieve() throws Exception {
//================================================
// ソケットのプロパティの設定
//================================================
SystemPropertySetter.doSet( properties );
//================================================
// コネクションの設定
//================================================
setConnection();
//================================================
// コネクションプロパティを設定する
//================================================
ConnectionPropertySetter.doSet( this );
/***************************************************************************/
/* CookieContainerを参照して、既にサーバに対するCOOKIE文字列が取得済みなら */
/* HTTPリクエストヘッダにCOOKIE文字列をセットして送る */
/***************************************************************************/
String host = getHost( );
String cookieInfo = CookieContainer.getInstance().getCookieInfo( host );
if ( cookieInfo != null ) {
connection.setRequestProperty( "Cookie", cookieInfo );
System.err.println( " *** Adding HTTP Request header *** Cookie: " + cookieInfo );
}
//================================================
// HTTP REFERERをリクエストヘッダにセットする
//================================================
// 未実装
//================================================
// レスポンスヘッダの取得
//================================================
setResponseHeader();
//================================================
// レスポンスボディの取得
//================================================
setResponseBody();
//================================================
// このコネクションCOOKIEヘッダをセットする
// サーバが新しいSet-Cookieヘッダを吐いてきたら
// HTTPレスポンスヘッダを読み取り、Set-Cookieヘッダの値を取り出し、更新する
//====================================================================
CookieContainer.getInstance().setCookieInfo( this );
//================================================
// コネクションの解放
//================================================
closeConnection();
}
/** 取得した内容を解析する */
private void parse() {
/** タイトルの取得 */
title = ( new TitleExtractor() ).extract( bodyAsString );
/** リンクの取得 */
links = LinkRetriever.retrieve( url, responseHeaders, bodyAsString );
/** プロパティ情報を参照して適宜フィルタを掛ける */
links = LinkFilter.doFiltration( url, links, properties );
}
/** URLのホスト名を取得する
* @return ホスト名
*/
public String getHost() {
return url.getHost();
}
/** 自身のURLを取得する
* @return 自身のURL
*/
public URL getUrl() {
return url;
}
/** 自身のURLを取得する
* @return 自身のURL
*/
public int getResponseCode() {
return responseCode;
}
/**
* 単体テスト用メソッド
*/
static public void main( String[] args ) throws Exception {
Iterator iterator;
URLContent content = new URLContent( args[ 0 ], args[ 1 ] );
//--------------------------------------------
// レスポンスヘッダの取得
//--------------------------------------------
List headers = content.getResponseHeaders();
iterator = headers.iterator();
int i = 0;
while ( iterator.hasNext() ) {
String[] pair = ( String[] ) iterator.next();
System.out.printf( "[%2d] %s: %s\n", ++i, pair[ 0 ], pair[ 1 ] );
}
//--------------------------------------------
// レスポンスコードの取得
//--------------------------------------------
System.out.println( "RESPONSE_CODE=" + content.getResponseCode() );
//--------------------------------------------
// レスポンスボディの取得
//--------------------------------------------
String body = content.getBodyAsString();
//--------------------------------------------
// タイトルの取得
//--------------------------------------------
System.out.println( "タイトル = " + content.getTitle() );
//--------------------------------------------
// リンクの取得
//--------------------------------------------
iterator = content.getLinks().iterator();
i = 0;
while ( iterator.hasNext() ) {
String hyperLink = ( String ) iterator.next();
System.out.printf( "(%3d) %s\n", ++i, hyperLink );
}
// レスポンスボディのダンプ
// System.out.println( body );
}
}
戻る