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

# クラス HttpConnect

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

public class HttpConnect extends 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[*] : [-usePost=true]         POSTを強制的に使用する場合にｾｯﾄします(初期値:false)
       args[*] : [-errEx=true/false]     trueの場合、ﾚｽﾎﾟﾝｽｺｰﾄﾞが、4XX,5XX の時に RuntimeException を投げます(初期値:false)
       args[*] : [-authJson=JSONコード]  JSONコードで認証する場合に使用します。8.0.0.0 (2021/08/31)
       args[*] : [-authURL=認証用URL]    JSONコードで認証するURLを指定します。8.0.0.0 (2021/08/31)
       args[*] : [-reqJson=JSONコード]   パラメータをJSONで指定する場合に使用します。8.0.0.0 (2021/08/31)
       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) 新規作成, 8.0.0.0 (2021/08/31) httpclient5 対応 https://hc.apache.org/httpcomponents-core-5.1.x/current/httpcore5/apidocs/ https://hc.apache.org/httpcomponents-client-5.1.x/current/httpclient5/apidocs/
導入されたバージョン:
  JDK11.0,

- ## フィールドの概要

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

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

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

- ## メソッドの概要

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

  - ### DEFAULT_LANG

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

  - ### DEFAULT_AGENT

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

- ## メソッドの詳細

  - ### readData

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

  - ### addRequestProperty

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

  - ### setProxy

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

  - ### addHeaderProperty

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

  - ### setUploadFile

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

  - ### setCharset

    public void setCharset(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) 新規作成

  - ### setAuthJson

    public void setAuthJson(String json, String url)
    jsonによる2フェーズ認証を行う場合の設定。 認証用のデータをJSON形式の文字列で設定します。 urlは、認証するためのURLを指定します。
    パラメータ:
      `json` - 認証用のデータを設定するJSON文字列
      `url` - JSON文字列で認証を行うURL(無ければnull)
    変更履歴:
      8.0.0.0 (2021/08/31) 新規作成

  - ### setReqJson

    public void setReqJson(String json)
    パラメータをJSONで指定する場合に使用します。 JSON形式でパラメータを指定する場合に使用します。 $XXXX$ 文字列は、先のjson認証で取得した各種ﾊﾟﾗﾒｰﾀを割り当てます。
    パラメータ:
      `json` - JSON文字列のパラメータ
    変更履歴:
      8.0.0.0 (2021/08/31) 新規作成

  - ### setPostRedirect

    public void setPostRedirect(boolean useRedirect)
    trueの場合、POST時に強制的にﾘﾀﾞｲﾚｸﾄを行います(初期値:false)。
    パラメータ:
      `useRedirect` - true:POST時に強制的にﾘﾀﾞｲﾚｸﾄ/false:通常
    変更履歴:
      7.2.5.0 (2020/06/01) postRedirect(POST時に強制的にﾘﾀﾞｲﾚｸﾄ), 8.0.0.0 (2021/07/31) httpclient5-5.1対応により LaxRedirectStrategy 廃止の為一旦削除

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

  - ### code2Message

    public static 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(String[] args) throws 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[*] : [-useForm=true/false]   認証方式にFORM認証を指定する場合、trueをｾｯﾄします(初期値:false) 8.0.0.0 (2021/08/20)
           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[*] : [-usePost=true]         POSTを強制的に使用する場合にｾｯﾄします(初期値:false) 8.0.0.0 (2021/08/20)
           args[*] : [-errEx=true/false]     trueの場合、ﾚｽﾎﾟﾝｽｺｰﾄﾞが、4XX,5XX の時に RuntimeException を投げます(初期値:false)
           args[*] : [#････]                 ｺﾒﾝﾄ引数。(BATﾌｧｲﾙ上に残しておきたいが、使用したくない場合など)
           args[*] : [-debug=true/false]     trueの場合、適度にデバッグ用のメッセージを出力します(初期値:false)

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