org.opengion.fukurou.util

## クラス URLConnect

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

- 直系の既知のサブクラス:
    SOAPConnect

      public class URLConnect
      extends Object

       URLConnect は、指定のURL にアクセスして、情報/データを取得します。
       URL へのアクセスにより、エンジンでは各種処理を実行させることが可能になります。
       例えば、帳票デーモンの起動や、長時間かかる処理の実行などです。
       なお、URLに引数が付く場合は、ダブルコーテーションで括って下さい。
       - 付き引数は、指定順番は、関係ありません。- 無し引数(url,user:passwd)は、
       順番があります。

       Usage: java org.opengion.fukurou.util.URLConnect [-info/-data] … url [user:passwd]

         args[*] : [-info/-data]       情報の取得か、データの取得かを指定します(初期値:data)
         args[*] : [-post=ファイル名]  POSTメソッドを指定して、ファイルデータを送信します
         args[*] : [-timeout=1]        接続タイムアウト時間を(秒)で指定します(初期値:-1)
         args[*] : [-encode=UTF-8]     エンコードを指定します(通常は接続先のencodeを使用)
         args[*] : [-out=ファイル名]   結果を指定されたファイルエンコードでファイルに出力します
         args[*] : [-errEx=true/false] trueの場合、ﾚｽﾎﾟﾝｽｺｰﾄﾞが、4XX,5XX の時に RuntimeException を投げます(初期値:false)
         args[A] : url                 ＵＲＬを指定します。GETの場合、パラメータは ?KEY=VALです
         args[B] : [user:passwd]       BASIC認証のエリアへのアクセス時に指定します

       ※ プロキシ設定の３つの方法
       プロキシ設定には、３つの方法があります。
         1.
           URL url = URL( "http",proxyHost,proxyPort, url );
           URLConnection urlConn = url.openConnection();
         2.
           SocketAddress scaddr = new InetSocketAddress( proxyHost, proxyPort );
           Proxy proxy = new Proxy( Proxy.Type.HTTP, scaddr );
           URL url = new Url( url );
           URLConnection urlConn = url.openConnection( proxy );
         3.
           System.setProperty( "http.proxyHost",host );
           System.setProperty( "http.proxyPort",String.valueOf( port ) );
           URL url = new Url( url );
           URLConnection urlConn = url.openConnection();
           System.clearProperty( "http.proxyHost" );
           System.clearProperty( "http.proxyPort" );

       1. 、2. の方法は、urlConn.getContentType() を実行すると、エラーになります。(原因不明)
       3. の方法では、マルチスレッドで実行する場合に、問題が発生します。
       本クラスでは、方法２ を使用しています。

  バージョン
    4.0
  作成者
    Kazuhiko Hasegawa
  導入されたバージョン:
    JDK5.0,

- - ### コンストラクタのサマリー

    コンストラクタ
    コンストラクタと説明
    `URLConnect(String url, String pass)` コンストラクター

  - ### メソッドのサマリー

    すべてのメソッド staticメソッド インスタンス・メソッド concreteメソッド
    修飾子とタイプ | メソッドと説明
    --- | ---
    `static String` | `code2Message(int code)` HttpURLConnection のレスポンスコードに対応するメッセージ文字列を返します。
    `void` | `connect()` 指定のURLに対して、コネクトします。
    `void` | `disconnect()` サーバへのほかの要求が今後発生しそうにないことを示します。
    `String` | `getCharset()` キャラクタ 情報を取得します。
    `int` | `getCode()` 結果コード 情報(HttpURLConnection)を取得します。
    `protected URLConnection` | `getConnection()` URL と ユーザー：パスワードを与えて、URLConnectionを返します。
    `long` | `getDate()` 作成日時 情報を取得します。
    `InputStream` | `getInputStream()` 接続先のデータの入力ストリームを取得します。
    `long` | `getLength()` データ量 情報を取得します。
    `String` | `getMessage()` メッセージ 情報(HttpURLConnection)を取得します。
    `String` | `getMethod()` メソッド 情報(HttpURLConnection)を取得します。
    `long` | `getModified()` 更新日時 情報を取得します。
    `BufferedReader` | `getReader()` 接続先のデータのリーダーを取得します。
    `String` | `getType()` タイプ 情報を取得します。
    `String` | `getUrl()` URL 情報を取得します。
    `static void` | `main(String[] args)` サンプル実行用のメインメソッド Usage: java org.opengion.fukurou.util.URLConnect [-info/-data] … url [user:passwd] args[*] : [-info/-data] 情報の取得か、データの取得かを指定します(初期値:-data)。
    `String` | `readData()` U接続先のデータを取得します。
    `void` | `setCharset(String chset)` キャラクタ 情報を設定します。
    `void` | `setPostData(String data)` POSTするデータを設定します。
    `void` | `setProxy(String host, int port)` 指定のURLに対して、コネクトするのに使用するプロキシ設定を行います。
    `void` | `setRequestProperty(String keys, String vals)` setRequestPropertyでセットするデータを設定します。
    `void` | `setTimeout(int tout)` 接続タイムアウト時間を(秒)で指定します 実際には、java.net.URLConnection#setConnectTimeout(int) に 1000倍して設定されます。

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

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

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

    - #### URLConnect

          public URLConnect(String url,
                            String pass)

      コンストラクター
      パラメータ:
        `url` - 接続するアドレスを指定します。(http://server:port/dir/file.html)
        `pass` - ユーザー：パスワード(認証接続が必要な場合)

  - ### メソッドの詳細

    - #### setProxy

          public void setProxy(String host,
                               int port)

      指定のURLに対して、コネクトするのに使用するプロキシ設定を行います。 このときに、ヘッダー情報を内部変数に設定しておきます。
      パラメータ:
        `host` - 接続するプロキシのホスト名
        `port` - 接続するプロキシのポート番号

    - #### connect

          public void connect()
                       throws IOException

      指定のURLに対して、コネクトします。 このときに、ヘッダー情報を内部変数に設定しておきます。
      例外:
        `IOException` - 入出力エラーが発生したとき
      変更履歴:

        4.0.1.0 (2007/12/12) Postで複数キーを使えるように修正
        5.1.6.0 (2010/05/01) charsetを指定できるようにする

    - #### readData

          public String readData()
                          throws IOException

      U接続先のデータを取得します。 この処理の前に、connect() 処理を実行しておく必要があります。 取得したデータは、指定のURL へのアクセスのみです。 通常のWebブラウザは、イメージや、JavaScriptファイル、CSSファイルなど、 各種ファイル毎にHTTP接続を行い、取得して、レンダリングします。 このメソッドでの処理では、それらのファイル内に指定されているURLの 再帰的な取得は行いません。 よって、フレーム処理なども行いません。 本来は、Stream のまま処理することで、バイナリデータも扱えますが、ここでは、 テキストデータ(String)に変換して使用できるデータのみ扱えます。
      戻り値:
        接続結果
      例外:
        `IOException` - 入出力エラーが発生したとき
      このメソッドは、nullを返しません

    - #### disconnect

          public void disconnect()

      サーバへのほかの要求が今後発生しそうにないことを示します。

    - #### getConnection

          protected URLConnection getConnection()
                                         throws IOException

      URL と ユーザー：パスワードを与えて、URLConnectionを返します。 ユーザー：パスワード が null でない場合は、BASCI認証エリアへのアクセスの為、 BASE64Encoder を行って、Authorization プロパティーを設定します。 ここで返す URLConnection は、すでに、connect() メソッド実行済みの リモート接続が完了した状態のオブジェクトです。
      戻り値:
        URLConnectionオブジェクト
      例外:
        `IOException` - 入出力エラーが発生したとき
      変更履歴:

        5.8.3.0 (2015/01/09) ヘッダ等指定のためにsetRequestPropertyの値を指定できるようにします。
        6.2.5.0 (2015/06/05) timeout属性追加
        6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)
        6.4.2.0 (2016/01/29) fukurou.util.StringUtil → fukurou.system.HybsConst に変更

    - #### getUrl

          public String getUrl()

      URL 情報を取得します。
      戻り値:
        URL情報
      変更履歴:

        4.3.4.4 (2009/01/01) メソッド名変更

    - #### setRequestProperty

          public void setRequestProperty(String keys,
                                         String vals)

      setRequestPropertyでセットするデータを設定します。 ヘッダ等指定のためにsetRequestPropertyの値を指定できるようにします。 例えばJSON形式でPOSTする場合は通常"Content-Type", "application/json"を指定します。 keys,vals各々、カンマ区切り(CSV形式)で渡されますので、分解しておきます。
      パラメータ:
        `keys` - パラメータキー(CSV形式)
        `vals` - パラメータ値(CSV形式)
      例外:
        `IllegalArgumentException` - 引数の数が一致しない場合
      変更履歴:

        5.8.3.0 (2015/01/09) ヘッダ等指定のためにsetRequestPropertyの値を指定できるようにします。

    - #### setPostData

          public void setPostData(String data)

      POSTするデータを設定します。 POSTする場合は、connect() 処理を行う前に、データを設定しておく必要があります。
      パラメータ:
        `data` - POSTデータ
      変更履歴:

        4.1.0.0 (2007/12/22) キーと値のセットを取得するよう変更

    - #### getType

          public String getType()

      タイプ 情報を取得します。
      戻り値:
        タイプ 情報

    - #### getLength

          public long getLength()

      データ量 情報を取得します。
      戻り値:
        データ量 情報

    - #### getDate

          public long getDate()

      作成日時 情報を取得します。
      戻り値:
        作成日時

    - #### getModified

          public long getModified()

      更新日時 情報を取得します。
      戻り値:
        更新日時

    - #### getCode

          public int getCode()

      結果コード 情報(HttpURLConnection)を取得します。
      戻り値:
        結果コード 情報

    - #### getMethod

          public String getMethod()

      メソッド 情報(HttpURLConnection)を取得します。
      戻り値:
        メソッド 情報

    - #### getMessage

          public String getMessage()

      メッセージ 情報(HttpURLConnection)を取得します。
      戻り値:
        メッセージ 情報

    - #### getCharset

          public String getCharset()

      キャラクタ 情報を取得します。
      戻り値:
        キャラクタ 情報

    - #### setCharset

          public void setCharset(String chset)

      キャラクタ 情報を設定します。
      パラメータ:
        `chset` - キャラクタ 情報

    - #### setTimeout

          public void setTimeout(int tout)

      接続タイムアウト時間を(秒)で指定します 実際には、java.net.URLConnection#setConnectTimeout(int) に 1000倍して設定されます。 0 は、無限のタイムアウト、マイナスは、設定しません。(つまりJavaの初期値のまま)
      パラメータ:
        `tout` - タイムアウト時間(秒) (ゼロは、無制限)
      関連項目:
        `URLConnection.setConnectTimeout(int)`
      変更履歴:

        6.2.5.0 (2015/06/05) timeout属性追加

    - #### getReader

          public BufferedReader getReader()
                                   throws IOException

      接続先のデータのリーダーを取得します。 この処理の前に、connect() 処理を実行しておく必要があります。 取得したデータは、指定のURL へのアクセスのみです。 通常のWebブラウザは、イメージや、JavaScriptファイル、CSSファイルなど、 各種ファイル毎にHTTP接続を行い、取得して、レンダリングします。 このメソッドでの処理では、それらのファイル内に指定されているURLの 再帰的な取得は行いません。 よって、フレーム処理なども行いません。
      戻り値:
        接続結果のリーダー
      例外:
        `IOException` - 入出力エラーが発生したとき
      変更履歴:

        6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)
        6.4.2.0 (2016/01/29) fukurou.util.StringUtil → fukurou.system.HybsConst に変更

    - #### getInputStream

          public InputStream getInputStream()
                                     throws IOException

      接続先のデータの入力ストリームを取得します。 この処理の前に、connect() 処理を実行しておく必要があります。 取得したデータは、指定のURL へのアクセスのみです。 通常のWebブラウザは、イメージや、JavaScriptファイル、CSSファイルなど、 各種ファイル毎にHTTP接続を行い、取得して、レンダリングします。 このメソッドでの処理では、それらのファイル内に指定されているURLの 再帰的な取得は行いません。 よって、フレーム処理なども行いません。
      戻り値:
        接続結果の入力を出力します。
      例外:
        `IOException` - 入出力エラーが発生したとき
      変更履歴:

        5.4.2.0 (2011/12/01) 新規追加
        6.3.9.0 (2015/11/06) コンストラクタで初期化されていないフィールドを null チェックなしで利用している(findbugs)

      このメソッドは、nullを返しません

    - #### code2Message

          public static String code2Message(int code)

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

        5.6.7.0 (2013/07/27) レスポンスコード例 追加

      このメソッドは、nullを返しません

    - #### main

          public static void main(String[] args)
                           throws IOException

      サンプル実行用のメインメソッド Usage: java org.opengion.fukurou.util.URLConnect [-info/-data] … url [user:passwd] args[*] : [-info/-data] 情報の取得か、データの取得かを指定します(初期値:-data)。 args[*] : [-post=ファイル名] POSTメソッドを指定して、ファイルデータを送信します(初期値:-get)。 args[*] : [-timeout=1] 接続タイムアウト時間を(秒)で指定します args[*] : [-encode=UTF-8] エンコードを指定します(通常は接続先のencodeを使用) args[*] : [-out=ファイル名] 結果をファイルに出力します。ファイルエンコードも指定します。 args[*] : [-errEx=true/false] trueの場合、ﾚｽﾎﾟﾝｽｺｰﾄﾞが、4XX,5XX の時に RuntimeException を投げます(初期値:false)。 args[A] : url ＵＲＬを指定します。GETの場合、パラメータは ?KEY=VALです。 args[B] : [user:passwd] BASIC認証のエリアへのアクセス時に指定します。
      パラメータ:
        `args` - コマンド引数配列
      例外:
        `IOException` - 入出力エラーが発生したとき
      変更履歴:

        5.6.7.0 (2013/07/27) -errEx 追加
        6.2.5.0 (2015/06/05) timeout属性追加
        6.4.5.1 (2016/04/28) FileStringのコンストラクター変更
        6.4.5.2 (2016/05/06) fukurou.util.FileString から、fukurou.util.FileUtil に移動。

Webアプリケーションフレームワーク openGion
Copyright (c) 2009 The openGion Project.