リクエストヘッダー
日本語 | 要求頭部 |
英語 | request header |
ふりがな | りくえすとへっだー |
フリガナ | リクエストヘッダー |
リクエストと共に送る情報。
HTTPメソッドの次の行から付加する文字列を「リクエストヘッダー」と呼ぶ。
その名の通り「リクエスト」の「ヘッダー」であり、リクエストに付随する情報を付加する。
「リクエストヘッダー名:値」という形式で、一行につき一情報となる。
たとえばホスト名を指定するためには「Host:ホスト名」とする。
リクエストヘッダーの終わりには空行を入れる。そうすることで、たとえばPOSTの場合にはリクエストヘッダーとパラメーターとを明確に区別する。
HTTPメソッドの次の行から付加する文字列を「リクエストヘッダー」と呼ぶ。
その名の通り「リクエスト」の「ヘッダー」であり、リクエストに付随する情報を付加する。
「リクエストヘッダー名:値」という形式で、一行につき一情報となる。
たとえばホスト名を指定するためには「Host:ホスト名」とする。
リクエストヘッダーの終わりには空行を入れる。そうすることで、たとえばPOSTの場合にはリクエストヘッダーとパラメーターとを明確に区別する。
// 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(); } } } }