JavaA2Z

KAB-studio > プログラミング > JavaA2Z > リクエストパラメーターとは

リクエストパラメーター

日本語 要求助変数
英語 request parameter
ふりがな りくえすとぱらめーたー
フリガナ リクエストパラメーター

解説

HTTPリクエストを送信する際に、一緒に送ることができる情報。
リクエストをまさに「メソッド」とするなら、リクエストパラメーターはその「引数」となる。
 
GETで送信する場合、URLに付記する形式でリクエストパラメーターを送信する。
元々のURLに「?」を付け、そのあとに「名前=値」の形式でリクエストパラメーターを付記する。複数のリクエストパラメーターがある場合には「&」で継なぐ。
通常、リクエストパラメーターには半角英数字しか使用することはできない。日本語を使用する場合にはURLEncoderクラスのencode()メソッドで「%xx」という形式に変換する必要がある。ただし、その際の文字コードは特に決められていないため、通常はその文字コードの情報もリクエストパラメーターとして渡す。
たとえば、Googleで「あいうえお」を検索する場合、「http://www.google.co.jp/search?ie=UTF-8&q=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A」というURLになる。この「?」以降の「ie=UTF-8」及び「q=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A」がリクエストパラメーターである。「%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A」は「あいうえお」をUTF-8形式に変換したものである。
 
POSTで送信する場合、入力フォームを用いて送信をう。
この場合、URLには付記しないため、Webブラウザアドレス欄に情報が表示されない。
ソケットで送信する場合には、送信内容は「本文」として送信する。この場合、同じく「名前=値」の形式で送信する。各データは改行で区切る。文字コードは受け取る側によって異なる。
 
ただし、このPOSTによる送信を「リクエストパラメーター」と呼ばない場合もある。
URLに付記する「?」以降のみを「リクエストパラメーター」と呼ぶこともある。
 
リクエストパラメーターをサーブレットで受け取る場合、HttpServletRequestクラスのgetParameter()メソッドで「名前」を指定することで「値」を取得することができる。

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// 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.io.UnsupportedEncodingException;
import java.net.Socket;
import java.net.URLEncoder;
import java.net.UnknownHostException;

public class Sample
{
    public static void main( String[] args )
    {
        // 接続先のホスト名(URLではありません)。
        String host = "www.google.co.jp";
        // 接続時のポート番号。
        int port = 80;
        // リクエストのメソッド。
        String method = "GET";
        // リクエストURL。
        String url = "/search?";
        // リクエストのプロトコル。
        String protocol = "HTTP/1.1";
        // 「Host」リクエストヘッダー。
        String hostHeader = "Host:";

        // Googleに渡す検索文字列の文字コード、を指定するためのパラメーター名。
        String ieName = "ie=";
        // Googleに渡す検索文字列の文字コード。
        String ieValue = "UTF-8";
        // Googleに渡す検索文字列、を指定するためのパラメーター名。
        String qName = "q=";
        // Googleに渡す検索文字列。
        String qValue = null;
        try
        {
            qValue = URLEncoder.encode( "あいうえお", ieValue );
        }
        catch( UnsupportedEncodingException e )
        {
            e.printStackTrace();
        }

        // リクエストパラメーターを含めた、GETで渡すリクエストを
        // 作成します。
        StringBuffer request = new StringBuffer();
        request.append( method );
        request.append( " " );
        request.append( url );
        request.append( ieName );
        request.append( ieValue );
        request.append( "&" );
        request.append( qName );
        request.append( qValue );
        request.append( " " );
        request.append( protocol );
        System.out.println( request );
        // GET /search?ie=UTF-8&q=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A HTTP/1.1

        // ソケットクラス。
        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() );
            bufferedReader = new BufferedReader( inputStreamReader );

            // リクエスト送信用ストリームクラスを準備します。
            outputStreamWriter = new OutputStreamWriter( socket.getOutputStream() );
            bufferedWriter = new BufferedWriter( outputStreamWriter );
            printWriter = new PrintWriter( bufferedWriter );

            // リクエストを送信します。
            // GET /search?ie=UTF-8&q=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A HTTP/1.1
            // Host:www.google.co.jp
            // (改行のみ)
            printWriter.println( request.toString() );
            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
            // Cache-Control: private
            // Content-Type: text/html
            // Set-Cookie: PREF=ID=5f762de873e8cf87:TM=1125407150:LM=1125407150:S=BaDObXvvCxxpj02-; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.co.jp
            // Server: GWS/2.1
            // Transfer-Encoding: chunked
            // Date: Tue, 30 Aug 2005 13:05:50 GMT
            // 
            // dda
            // <html><head><meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=Shift_JIS"><title>あいうえお - Google 検索 </title><style><!--
            // (以下略)
        }
        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.io.UnsupportedEncodingException;
import java.net.Socket;
import java.net.URLEncoder;
import java.net.UnknownHostException;

public class Sample
{
    public static void main( String[] args )
    {
        // 接続先のホスト名(URLではありません)。
        String host = "www.google.co.jp";
        // 接続時のポート番号。
        int port = 80;
        // リクエストのメソッド。
        String method = "GET";
        // リクエストURL。
        String url = "/search?";
        // リクエストのプロトコル。
        String protocol = "HTTP/1.1";
        // 「Host」リクエストヘッダー。
        String hostHeader = "Host:";

        // Googleに渡す検索文字列の文字コード、を指定するためのパラメーター名。
        String ieName = "ie=";
        // Googleに渡す検索文字列の文字コード。
        String ieValue = "UTF-8";
        // Googleに渡す検索文字列、を指定するためのパラメーター名。
        String qName = "q=";
        // Googleに渡す検索文字列。
        String qValue = null;
        try
        {
            qValue = URLEncoder.encode( "あいうえお", ieValue );
        }
        catch( UnsupportedEncodingException e )
        {
            e.printStackTrace();
        }

        // リクエストパラメーターを含めた、GETで渡すリクエストを
        // 作成します。
        StringBuffer request = new StringBuffer();
        request.append( method );
        request.append( " " );
        request.append( url );
        request.append( ieName );
        request.append( ieValue );
        request.append( "&" );
        request.append( qName );
        request.append( qValue );
        request.append( " " );
        request.append( protocol );
        System.out.println( request );
        // GET /search?ie=UTF-8&q=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A HTTP/1.1

        // ソケットクラス。
        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() );
            bufferedReader = new BufferedReader( inputStreamReader );

            // リクエスト送信用ストリームクラスを準備します。
            outputStreamWriter = new OutputStreamWriter( socket.getOutputStream() );
            bufferedWriter = new BufferedWriter( outputStreamWriter );
            printWriter = new PrintWriter( bufferedWriter );

            // リクエストを送信します。
            // GET /search?ie=UTF-8&q=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A HTTP/1.1
            // Host:www.google.co.jp
            // (改行のみ)
            printWriter.println( request.toString() );
            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
            // Cache-Control: private
            // Content-Type: text/html
            // Set-Cookie: PREF=ID=5f762de873e8cf87:TM=1125407150:LM=1125407150:S=BaDObXvvCxxpj02-; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.co.jp
            // Server: GWS/2.1
            // Transfer-Encoding: chunked
            // Date: Tue, 30 Aug 2005 13:05:50 GMT
            // 
            // dda
            // <html><head><meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=Shift_JIS"><title>あいうえお - Google 検索 </title><style><!--
            // (以下略)
        }
        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();
            }
        }
    }
}

この単語を含むページ

「みだし」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/10/11
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。