HEAD
日本語 | 頭部 |
英語 | head |
ふりがな | へっど |
フリガナ | ヘッド |
ホームページの情報を取得するためのHTTPメソッド。
HTTPを用いて、特定のURLからホームページや画像等を取得する前に、その基本情報を取得するために使用するHTTPメソッド。
"HEAD /index.html HTTP/1.1"のような形式でソケットを用いて送信することで、情報を取得することができる。
GETで本情報を取得する前に呼び出す。
最終更新日時、本データのサイズ、文字コードを取得するために使用する。
特に、最終更新日時を取得し、キャッシュと比較することで、古い情報を新たに取得することを避ける事ができる。
ただし、必ずしも適切に情報を返すとは限らない点に注意。
GETと同じ結果を返す場合、正しいデータを返さない場合等もあるため、プログラムを組む際には、HEADの情報を過信しすぎないように組む必要がある。
HTTPを用いて、特定のURLからホームページや画像等を取得する前に、その基本情報を取得するために使用するHTTPメソッド。
"HEAD /index.html HTTP/1.1"のような形式でソケットを用いて送信することで、情報を取得することができる。
GETで本情報を取得する前に呼び出す。
最終更新日時、本データのサイズ、文字コードを取得するために使用する。
特に、最終更新日時を取得し、キャッシュと比較することで、古い情報を新たに取得することを避ける事ができる。
ただし、必ずしも適切に情報を返すとは限らない点に注意。
GETと同じ結果を返す場合、正しいデータを返さない場合等もあるため、プログラムを組む際には、HEADの情報を過信しすぎないように組む必要がある。
// Sample.java
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class Sample
{
public static void main( String[] args )
{
// 接続先のホスト名(URLではありません)。
String host = "www.yahoo.co.jp";
// 接続時のポート番号。
int port = 80;
// リクエストのメソッド。
String method = "GET";
// リクエストURL。
String url = "/index.html";
// リクエストのプロトコル。
String protocol = "HTTP/1.1";
// 「Host」リクエストヘッダー。
String hostHeader = "Host:";
// Content-Typeの文字コード(注:実際には、HEADで文字コードを取得してから指定します)。
String charSet = "EUC-JP";
// ソケットクラス。
Socket socket = null;
// ホームページを取得するためのストリームクラス。
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
// 接続情報を送るためのストリームクラス。
OutputStreamWriter outputStreamWriter = null;
BufferedWriter bufferedWriter = null;
PrintWriter printWriter = null;
try
{
// 接続します。
socket = new Socket( host, port );
// ホームページ取得用ストリームクラスを準備します。
inputStreamReader = new InputStreamReader( socket.getInputStream(), charSet );
bufferedReader = new BufferedReader( inputStreamReader );
// リクエスト送信用ストリームクラスを準備します。
outputStreamWriter = new OutputStreamWriter( socket.getOutputStream() );
bufferedWriter = new BufferedWriter( outputStreamWriter );
printWriter = new PrintWriter( bufferedWriter );
// リクエストを送信します。
// GET /index.html HTTP/1.1
// Host:www.yahoo.co.jp
// (改行のみ)
printWriter.println( method + " " + url + " " + protocol );
printWriter.println( hostHeader + host );
printWriter.println();
printWriter.flush();
// ホームページの情報を取得します。
String line = null;
do
{
line = bufferedReader.readLine();
if( line != null )
{
System.out.println( line );
}
}
while( line != null );
// HTTP/1.1 200 OK
// Date: Thu, 25 Aug 2005 11:19:55 GMT
// P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
// Expires: -1
// Pragma: no-cache
// Cache-Control: no-cache
// Connection: close
// Content-Type: text/html;charset=euc-jp
//
// <html>
// <head>
// <title>Yahoo! JAPAN</title>
// (以下略。HEADで取得した場合には、「Content-Type: text/html;charset=euc-jp」まで
// 取得できるので、この文字コードをInputStreamReaderクラスのコンストラクタの
// 第2引数に指定してください)
}
catch( UnknownHostException e )
{
e.printStackTrace();
}
catch( IOException e )
{
e.printStackTrace();
}
finally
{
// ストリーム及びソケットを閉じます。
if( printWriter != null )
{
printWriter.close();
}
try
{
if( bufferedWriter != null )
{
bufferedWriter.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
try
{
if( outputStreamWriter != null )
{
outputStreamWriter.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
try
{
if( bufferedReader != null )
{
bufferedReader.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
try
{
if( inputStreamReader != null )
{
inputStreamReader.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
try
{
if( socket != null )
{
socket.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
}
}
}
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;
import java.io.PrintWriter;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
public class Sample
{
public static void main( String[] args )
{
// 接続先のホスト名(URLではありません)。
String host = "www.yahoo.co.jp";
// 接続時のポート番号。
int port = 80;
// リクエストのメソッド。
String method = "GET";
// リクエストURL。
String url = "/index.html";
// リクエストのプロトコル。
String protocol = "HTTP/1.1";
// 「Host」リクエストヘッダー。
String hostHeader = "Host:";
// Content-Typeの文字コード(注:実際には、HEADで文字コードを取得してから指定します)。
String charSet = "EUC-JP";
// ソケットクラス。
Socket socket = null;
// ホームページを取得するためのストリームクラス。
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
// 接続情報を送るためのストリームクラス。
OutputStreamWriter outputStreamWriter = null;
BufferedWriter bufferedWriter = null;
PrintWriter printWriter = null;
try
{
// 接続します。
socket = new Socket( host, port );
// ホームページ取得用ストリームクラスを準備します。
inputStreamReader = new InputStreamReader( socket.getInputStream(), charSet );
bufferedReader = new BufferedReader( inputStreamReader );
// リクエスト送信用ストリームクラスを準備します。
outputStreamWriter = new OutputStreamWriter( socket.getOutputStream() );
bufferedWriter = new BufferedWriter( outputStreamWriter );
printWriter = new PrintWriter( bufferedWriter );
// リクエストを送信します。
// GET /index.html HTTP/1.1
// Host:www.yahoo.co.jp
// (改行のみ)
printWriter.println( method + " " + url + " " + protocol );
printWriter.println( hostHeader + host );
printWriter.println();
printWriter.flush();
// ホームページの情報を取得します。
String line = null;
do
{
line = bufferedReader.readLine();
if( line != null )
{
System.out.println( line );
}
}
while( line != null );
// HTTP/1.1 200 OK
// Date: Thu, 25 Aug 2005 11:19:55 GMT
// P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
// Expires: -1
// Pragma: no-cache
// Cache-Control: no-cache
// Connection: close
// Content-Type: text/html;charset=euc-jp
//
// <html>
// <head>
// <title>Yahoo! JAPAN</title>
// (以下略。HEADで取得した場合には、「Content-Type: text/html;charset=euc-jp」まで
// 取得できるので、この文字コードをInputStreamReaderクラスのコンストラクタの
// 第2引数に指定してください)
}
catch( UnknownHostException e )
{
e.printStackTrace();
}
catch( IOException e )
{
e.printStackTrace();
}
finally
{
// ストリーム及びソケットを閉じます。
if( printWriter != null )
{
printWriter.close();
}
try
{
if( bufferedWriter != null )
{
bufferedWriter.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
try
{
if( outputStreamWriter != null )
{
outputStreamWriter.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
try
{
if( bufferedReader != null )
{
bufferedReader.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
try
{
if( inputStreamReader != null )
{
inputStreamReader.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
try
{
if( socket != null )
{
socket.close();
}
}
catch( IOException e )
{
e.printStackTrace();
}
}
}
}
// Sample.java import java.io.InputStreamReader; import java.io.BufferedReader; import java.io.OutputStreamWriter; import java.io.BufferedWriter; import java.io.PrintWriter; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; public class Sample { public static void main( String[] args ) { // 接続先のホスト名(URLではありません)。 String host = "www.yahoo.co.jp"; // 接続時のポート番号。 int port = 80; // リクエストのメソッド。 String method = "GET"; // リクエストURL。 String url = "/index.html"; // リクエストのプロトコル。 String protocol = "HTTP/1.1"; // 「Host」リクエストヘッダー。 String hostHeader = "Host:"; // Content-Typeの文字コード(注:実際には、HEADで文字コードを取得してから指定します)。 String charSet = "EUC-JP"; // ソケットクラス。 Socket socket = null; // ホームページを取得するためのストリームクラス。 InputStreamReader inputStreamReader = null; BufferedReader bufferedReader = null; // 接続情報を送るためのストリームクラス。 OutputStreamWriter outputStreamWriter = null; BufferedWriter bufferedWriter = null; PrintWriter printWriter = null; try { // 接続します。 socket = new Socket( host, port ); // ホームページ取得用ストリームクラスを準備します。 inputStreamReader = new InputStreamReader( socket.getInputStream(), charSet ); bufferedReader = new BufferedReader( inputStreamReader ); // リクエスト送信用ストリームクラスを準備します。 outputStreamWriter = new OutputStreamWriter( socket.getOutputStream() ); bufferedWriter = new BufferedWriter( outputStreamWriter ); printWriter = new PrintWriter( bufferedWriter ); // リクエストを送信します。 // GET /index.html HTTP/1.1 // Host:www.yahoo.co.jp // (改行のみ) printWriter.println( method + " " + url + " " + protocol ); printWriter.println( hostHeader + host ); printWriter.println(); printWriter.flush(); // ホームページの情報を取得します。 String line = null; do { line = bufferedReader.readLine(); if( line != null ) { System.out.println( line ); } } while( line != null ); // HTTP/1.1 200 OK // Date: Thu, 25 Aug 2005 11:19:55 GMT // P3P: policyref="http://privacy.yahoo.co.jp/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV" // Expires: -1 // Pragma: no-cache // Cache-Control: no-cache // Connection: close // Content-Type: text/html;charset=euc-jp // // <html> // <head> // <title>Yahoo! JAPAN</title> // (以下略。HEADで取得した場合には、「Content-Type: text/html;charset=euc-jp」まで // 取得できるので、この文字コードをInputStreamReaderクラスのコンストラクタの // 第2引数に指定してください) } catch( UnknownHostException e ) { e.printStackTrace(); } catch( IOException e ) { e.printStackTrace(); } finally { // ストリーム及びソケットを閉じます。 if( printWriter != null ) { printWriter.close(); } try { if( bufferedWriter != null ) { bufferedWriter.close(); } } catch( IOException e ) { e.printStackTrace(); } try { if( outputStreamWriter != null ) { outputStreamWriter.close(); } } catch( IOException e ) { e.printStackTrace(); } try { if( bufferedReader != null ) { bufferedReader.close(); } } catch( IOException e ) { e.printStackTrace(); } try { if( inputStreamReader != null ) { inputStreamReader.close(); } } catch( IOException e ) { e.printStackTrace(); } try { if( socket != null ) { socket.close(); } } catch( IOException e ) { e.printStackTrace(); } } } }
「みだし」に含まれているページ
「サンプルプログラムとか」に含まれているページ
- classesディレクトリ
- Cookie
- DOM
- doPost
- GET
- HEAD
- HTML
- HTTP
- HttpServletRequest
- HttpServletResponse
- HttpSession
- HttpURLConnection
- HTTPメソッド
- IPアドレス
- java.net.URL
- JSP暗黙オブジェクト「application」
- JSP暗黙オブジェクト「config」
- JSP暗黙オブジェクト「pageContext」
- JSP暗黙オブジェクト「request」
- JSP暗黙オブジェクト「response」
- JSP暗黙オブジェクト「session」
- libディレクトリ
- Node
- PageContext
- POST
- RequestDispatcher
- ServletConfig
- ServletContext
- URI
- URL
- web.xml
- Xerces
- XML
- キャッシュ
- クッキー
- クロスサイトスクリプティング
- サニタイジング
- ステートレス
- セッション
- セッションID
- セッションスコープ
- タグ
- ドメイン名
- ホスト
- ポート番号
- リクエスト
- リクエストスコープ
- リクエストヘッダー
- ルート
- レスポンス
- レスポンスヘッダー
- 入力フォーム
- 実体参照
- 属性