パッケージ org.opengion.fukurou.util

## クラス HttpConnect

- java.lang.Object
- - org.opengion.fukurou.util.HttpConnect

-     public class HttpConnect
      extends java.lang.Object

  HttpConnect は、指定のURL にアクセスして、データを取得します。 URL へのアクセスにより、エンジンでは各種処理を実行させることが可能になります。 例えば、帳票デーモンの起動や、長時間かかる処理の実行などです。 なお、URLに引数が付く場合は、ダブルコーテーションで括って下さい。 URL の指定は、先頭に何もつけませ。指定の順番も関係ありません。 - 付き引数は、指定順番は、関係ありません。 先頭が # の引数は、コメントと判断します。

       Usage: java org.opengion.fukurou.util.HttpConnect [-post=キー:ファイル名] … url [user:passwd]
         args[A] : url                     ＵＲＬを指定します。GETの場合、パラメータは ?KEY=VALです
         args[*] : [-param=key:value]      POST/GET時のﾊﾟﾗﾒｰﾀのｷｰと値を:で区切って指定します。(複数回指定可)
         args[*] : [-header=key:value]     ﾍｯﾀﾞｰに設定するﾊﾟﾗﾒｰﾀのｷｰと値を:で区切って指定します。(複数回指定可)
         args[*] : [-auth=user:pass]       BASIC認証のエリアへのアクセス時のユーザーとパスワードを指定します
         args[*] : [-proxy=host:port]      proxy を使用する場合のホストとポートを指定します。
         args[*] : [-timeout=3]            接続タイムアウト時間を(秒)で指定します(初期値:無指定)
         args[*] : [-encode=UTF-8]         エンコードを指定します。(初期値は UTF-8)
         args[*] : [-out=ファイル名]       結果をファイルに出力します。初期値は標準出力です
         args[*] : [-download=ファイル名]  ﾌｧｲﾙ名を指定して、ﾀﾞｳﾝﾛｰﾄﾞします
         args[*] : [-upload=ファイル名]    ﾌｧｲﾙ名を指定して、multipart/form-dataでﾌｧｲﾙｱｯﾌﾟﾛｰﾄﾞします
         args[*] : [-postRedirect=true]    POST時に強制的にﾘﾀﾞｲﾚｸﾄを行います(GET時は自動でﾘﾀﾞｲﾚｸﾄします)(初期値:false) 7.2.5.0 (2020/06/01)
         args[*] : [-errEx=true/false]     trueの場合、ﾚｽﾎﾟﾝｽｺｰﾄﾞが、4XX,5XX の時に RuntimeException を投げます(初期値:false)
         args[*] : [#････]                 ｺﾒﾝﾄ引数。(BATﾌｧｲﾙ上に残しておきたいが、使用したくない場合など)
         args[*] : [-debug=true/false]     trueの場合、適度にデバッグ用のメッセージを出力します(初期値:false)

  ※ URLConnect との違い。 -info/-data 等の区別の廃止。(実質、-info がなくなる。) setDownloadFile(String) 追加(-binaryの代用) setUploadFile(String) 追加 proxy 設定の変更
  変更履歴:
    6.9.0.0 (2018/01/31) 新規作成
  バージョン
    6.9.0.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK8.0,

- - ### フィールドの概要

    フィールド
    修飾子とタイプ | フィールド | 説明
    --- | --- | ---
    `static java.lang.String` | `DEFAULT_AGENT` | User-Agentの初期値 "openGion with Apache HttpClient"
    `static java.lang.String` | `DEFAULT_CHARSET` | エンコードの初期値 "UTF-8"
    `static java.lang.String` | `DEFAULT_LANG` | 言語の初期値 "ja-JP"
    `static int` | `MAX_GET_LENGTH` | GETで指定するときのURLの長さ制限 2000 (IEの場合は、2,083文字)

  - ### コンストラクタの概要

    コンストラクタ
    コンストラクタ | 説明
    --- | ---
    `HttpConnect​(java.lang.String url, java.lang.String userPass)` | 接続先URLと、認証用ユーザー:パスワードを指定する、コンストラクター 認証が必要ない場合は、userPass は、null でかまいません。

  - ### メソッドの概要

    すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッド | 説明
    --- | --- | ---
    `void` | `addHeaderProperty​(java.lang.String key, java.lang.String val)` | Header として、HttpClient にセットするデータを設定します。
    `void` | `addRequestProperty​(java.lang.String key, java.lang.String val)` | 接続先に使用する引数(ﾊﾟﾗﾒｰﾀ)を追加します。
    `static java.lang.String` | `code2Message​(int code)` | HttpURLConnection のレスポンスコードに対応するメッセージ文字列を返します。
    `int` | `getCode()` | 実行結果のステータスコード 情報を取得します。
    `java.lang.String` | `getMessage()` | メッセージ 情報を取得します。
    `static void` | `main​(java.lang.String[] args)` | サンプル実行用のメインメソッド
    `java.lang.String` | `readData()` | URL接続先のデータを取得します。
    `void` | `setCharset​(java.lang.String chset)` | エンコード情報を設定します。
    `void` | `setDebug​(boolean isDebug)` | trueの場合、適度にデバッグ用のメッセージを出力します(初期値:false)。
    `void` | `setDownloadFile​(java.lang.String dwldFile)` | URL接続先のバイナリファイルをダウンロード取得します。
    `void` | `setPostRedirect​(boolean useRedirect)` | trueの場合、POST時に強制的にﾘﾀﾞｲﾚｸﾄを行います(初期値:false)。
    `void` | `setProxy​(java.lang.String host, int port)` | 指定のURLに対して、コネクトするのに使用するプロキシ設定を行います。
    `void` | `setRequestProperty​(java.lang.String keys, java.lang.String vals)` | setRequestPropertyでセットするデータを設定します。
    `void` | `setTimeout​(int tout)` | 接続タイムアウト時間を(秒)で指定します 実際には、org.apache.http.client.config.RequestConfig に対して、 .setConnectTimeout( timeout * 1000 ) .setSocketTimeout( timeout * 1000 ) のように、 1000倍して設定しています。
    `void` | `setUploadFile​(java.lang.String upldFile)` | URL接続先のバイナリファイルをアップロードします。
    `void` | `usePost​(boolean usePost)` | trueの場合、POSTを使用して接続します(初期値:false)。

    - ### クラスから継承されたメソッド java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### フィールドの詳細

    - #### DEFAULT_CHARSET

          public static final java.lang.String DEFAULT_CHARSET

      エンコードの初期値 "UTF-8"
      関連項目:
        定数フィールド値

    - #### DEFAULT_LANG

          public static final java.lang.String DEFAULT_LANG

      言語の初期値 "ja-JP"
      関連項目:
        定数フィールド値

    - #### DEFAULT_AGENT

          public static final java.lang.String DEFAULT_AGENT

      User-Agentの初期値 "openGion with Apache HttpClient"
      関連項目:
        定数フィールド値

    - #### MAX_GET_LENGTH

          public static final int MAX_GET_LENGTH

      GETで指定するときのURLの長さ制限 2000 (IEの場合は、2,083文字)
      関連項目:
        定数フィールド値

  - ### コンストラクタの詳細

    - #### HttpConnect

          public HttpConnect​(java.lang.String url,
                             java.lang.String userPass)

      接続先URLと、認証用ユーザー:パスワードを指定する、コンストラクター 認証が必要ない場合は、userPass は、null でかまいません。 接続先URLは、HttpConnect で、urlEncode しますので、そのままの文字列でかまいません。
      パラメータ:
        `url` - 接続するアドレスを指定します。(http://server:port/dir/file.html)
        `userPass` - ユーザー：パスワード(認証接続が必要な場合)
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成

  - ### メソッドの詳細

    - #### readData

          public java.lang.String readData()
                                    throws java.io.IOException,
                                           java.net.MalformedURLException

      URL接続先のデータを取得します。 この処理の前に、必要な情報を設定して置いてください。 また、code や message は、このメソッドを実行しないと取得できませんのでご注意ください。 取得したデータは、指定のURL へのアクセスのみです。 通常のWebブラウザは、イメージや、JavaScriptファイル、CSSファイルなど、 各種ファイル毎にHTTP接続を行い、取得して、レンダリングします。 このメソッドでの処理では、それらのファイル内に指定されているURLの 再帰的な取得は行いません。 よって、フレーム処理なども行いません。
      戻り値:
        接続結果
      例外:
        `java.io.IOException` - 入出力エラーが発生したとき
        `java.net.MalformedURLException` - URLの形式が間違っている場合
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成
      このメソッドは、nullを返しません

    - #### addRequestProperty

          public void addRequestProperty​(java.lang.String key,
                                         java.lang.String val)

      接続先に使用する引数(ﾊﾟﾗﾒｰﾀ)を追加します。 これは、POSTでも、GETでも使用できます。 POSTの場合は、NameValuePair として、HttpPost に、Entity としてセットするデータを設定します。 GET の場合は、既存の接続先URLに、&ｷｰ=値････ で、追記します。 すでに、ﾊﾟﾗﾒｰﾀが指定済みの場合は、& で、そうでなければ、? で連結します。 ここで指定するﾊﾟﾗﾒｰﾀは、内部で、urlEncode しますので、そのままの文字列でかまいません。 ﾃﾞﾌｫﾙﾄは、GETですが、Internet Explorer では URL に最大 2,083 文字しか指定できないため、 それ以上の場合は、POST に自動で切り替えます。
      パラメータ:
        `key` - パラメータキー(nullの場合は、登録しません)
        `val` - パラメータ値
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成

    - #### setRequestProperty

          public void setRequestProperty​(java.lang.String keys,
                                         java.lang.String vals)

      setRequestPropertyでセットするデータを設定します。 keys,vals各々、カンマ区切りで分解します。
      パラメータ:
        `keys` - パラメータキー（カンマ区切り）
        `vals` - パラメータ（カンマ区切り）
      変更履歴:
        5.10.16.0 (2019/10/04) 追加

    - #### setProxy

          public void setProxy​(java.lang.String host,
                               int port)

      指定のURLに対して、コネクトするのに使用するプロキシ設定を行います。 このときに、ヘッダー情報を内部変数に設定しておきます。
      パラメータ:
        `host` - 接続するプロキシのホスト名(nullの場合は、登録しません)
        `port` - 接続するプロキシのポート番号
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成

    - #### addHeaderProperty

          public void addHeaderProperty​(java.lang.String key,
                                        java.lang.String val)

      Header として、HttpClient にセットするデータを設定します。 例えばJSON形式でPOSTする場合は通常"Content-Type", "application/json"を指定します。
      パラメータ:
        `key` - パラメータキー(nullの場合は、登録しません)
        `val` - パラメータ値(nullの場合は、登録しません)
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成

    - #### setDownloadFile

          public void setDownloadFile​(java.lang.String dwldFile)
                               throws java.io.IOException

      URL接続先のバイナリファイルをダウンロード取得します。 取得したファイルは、dwldFile にバイナリのまま書き込まれます。 よって、エンコードの指定は不要です。
      パラメータ:
        `dwldFile` - ﾀﾞｳﾝﾛｰﾄﾞするファイル名。
      例外:
        `java.io.IOException` - 入出力エラーが発生したとき
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成

    - #### setUploadFile

          public void setUploadFile​(java.lang.String upldFile)
                             throws java.io.IOException

      URL接続先のバイナリファイルをアップロードします。 取得したファイルは、upldFile にバイナリのまま書き込まれます。 よって、エンコードの指定は不要です。 アップロード は、multipart/form-data で送信するため、isPost = true を 内部的に設定しておきます。
      パラメータ:
        `upldFile` - ｱｯﾌﾟﾛｰﾄﾞするファイル名。
      例外:
        `java.io.IOException` - 入出力エラーが発生したとき
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成, 7.2.5.0 (2020/06/01) upldFileのnull判定を入れます。

    - #### setCharset

          public void setCharset​(java.lang.String chset)

      エンコード情報を設定します。 初期値は、UTF-8 です。
      パラメータ:
        `chset` - エンコード情報(nullの場合は、初期値:UTF-8 になります)
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成

    - #### setTimeout

          public void setTimeout​(int tout)

      接続タイムアウト時間を(秒)で指定します 実際には、org.apache.http.client.config.RequestConfig に対して、 .setConnectTimeout( timeout * 1000 ) .setSocketTimeout( timeout * 1000 ) のように、 1000倍して設定しています。 0 は、無限のタイムアウト、マイナスは、設定しません。(つまりJavaの初期値のまま)
      パラメータ:
        `tout` - タイムアウト時間(秒) (ゼロは、無制限)
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成

    - #### usePost

          public void usePost​(boolean usePost)

      trueの場合、POSTを使用して接続します(初期値:false)。 通常はGETですが、外部から強制的に、POSTで送信したい場合に、 設定します。 ただし、バイナリファイルをアップロードか、URLの長さ制限が、 2000 を超えた場合は、内部で自動的に、post にします。
      パラメータ:
        `usePost` - true:POST使用/false:通常(GET)
      変更履歴:
        6.9.0.1 (2018/02/05) 新規作成

    - #### setPostRedirect

          public void setPostRedirect​(boolean useRedirect)

      trueの場合、POST時に強制的にﾘﾀﾞｲﾚｸﾄを行います(初期値:false)。
      パラメータ:
        `useRedirect` - true:POST時に強制的にﾘﾀﾞｲﾚｸﾄ/false:通常
      変更履歴:
        7.2.5.0 (2020/06/01) postRedirect(POST時に強制的にﾘﾀﾞｲﾚｸﾄ)

    - #### setDebug

          public void setDebug​(boolean isDebug)

      trueの場合、適度にデバッグ用のメッセージを出力します(初期値:false)。
      パラメータ:
        `isDebug` - true:デバッグ用のメッセージを出力/false:通常
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成

    - #### getCode

          public int getCode()

      実行結果のステータスコード 情報を取得します。 結果は、#readData() メソッドをコールしないと取れません。 未実行の場合は、-1 がセットされています。
      戻り値:
        結果コード 情報
      関連項目:
        `readData()`
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成

    - #### getMessage

          public java.lang.String getMessage()

      メッセージ 情報を取得します。 結果は、#readData() メソッドをコールしないと取れません。 未実行の場合は、null がセットされています。
      戻り値:
        メッセージ 情報
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成

    - #### code2Message

          public static java.lang.String code2Message​(int code)

      HttpURLConnection のレスポンスコードに対応するメッセージ文字列を返します。 HttpURLConnection の getResponseCode() メソッドにより取得された、HTTPレスポンスコード に対応する文字列を返します。この文字列は、HttpURLConnection で定義された static 定数のコメントを、定義しています。
      パラメータ:
        `code` - HTTPレスポンスコード
      戻り値:
        レスポンスコードに対応する文字列
      関連項目:
        `HttpURLConnection.HTTP_ACCEPTED`
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成
      このメソッドは、nullを返しません

    - #### main

          public static void main​(java.lang.String[] args)
                           throws java.io.IOException

      サンプル実行用のメインメソッド

           Usage: java org.opengion.fukurou.util.HttpConnect [-post=キー:ファイル名] … url [user:passwd]
             args[A] : url                     ＵＲＬを指定します。GETの場合、パラメータは ?KEY=VALです
             args[*] : [-param=key:value]      POST/GET時のﾊﾟﾗﾒｰﾀのｷｰと値を:で区切って指定します。(複数回指定可)
             args[*] : [-header=key:value]     ﾍｯﾀﾞｰに設定するﾊﾟﾗﾒｰﾀのｷｰと値を:で区切って指定します。(複数回指定可)
             args[*] : [-auth=user:pass]       BASIC認証のエリアへのアクセス時のユーザーとパスワードを指定します
             args[*] : [-proxy=host:port]      proxy を使用する場合のホストとポートを指定します。
             args[*] : [-timeout=3]            接続タイムアウト時間を(秒)で指定します(初期値:無指定)
             args[*] : [-encode=UTF-8]         エンコードを指定します。(初期値は UTF-8)
             args[*] : [-out=ファイル名]       結果をファイルに出力します。初期値は標準出力です
             args[*] : [-download=ファイル名]  ﾌｧｲﾙ名を指定して、ﾀﾞｳﾝﾛｰﾄﾞします
             args[*] : [-upload=ファイル名]    ﾌｧｲﾙ名を指定して、multipart/form-dataでﾌｧｲﾙｱｯﾌﾟﾛｰﾄﾞします
             args[*] : [-postRedirect=true]    POST時に強制的にﾘﾀﾞｲﾚｸﾄを行います(GET時は自動でﾘﾀﾞｲﾚｸﾄします)(初期値:false) 7.2.5.0 (2020/06/01)
             args[*] : [-errEx=true/false]     trueの場合、ﾚｽﾎﾟﾝｽｺｰﾄﾞが、4XX,5XX の時に RuntimeException を投げます(初期値:false)
             args[*] : [#････]                 ｺﾒﾝﾄ引数。(BATﾌｧｲﾙ上に残しておきたいが、使用したくない場合など)
             args[*] : [-debug=true/false]     trueの場合、適度にデバッグ用のメッセージを出力します(初期値:false)

      パラメータ:
        `args` - コマンド引数配列
      例外:
        `java.io.IOException` - 入出力エラーが発生したとき
      変更履歴:
        6.9.0.0 (2018/01/31) 新規作成, 7.2.5.0 (2020/06/01) postRedirect(POST時に強制的にﾘﾀﾞｲﾚｸﾄ)引数を追加