3

POST http イベントを使用して、Java アプリケーション/アプレットからファイルをアップロードしたいと考えています。他に (実行可能な) オプションがない限り、SE に含まれていないライブラリを使用することは避けたいと思います。
これまでのところ、私は非常に単純な解決策しか考えていません。
- 文字列 (バッファ) を作成し、互換性のあるヘッダー ( http://www.ietf.org/rfc/rfc1867.txt )を入力します。
- サーバー URL.openConnection() への接続を開き、このファイルの内容を OutputStream に書き込みます。
また、バイナリ ファイルを手動で POST イベントに変換する必要があります。

これを行うためのより良い、より簡単な方法があることを願っていますか?

4

2 に答える 2

8

java.net.URLおよびjava.net.URLConnectionクラスを使用する必要があります。

http://java.sun.com/docs/books/tutorial/networking/urls/readingWriting.htmlにいくつかの良い例があります

ここにいくつかの簡単で厄介なコードがあります:

public void post(String url) throws Exception {
    URL u = new URL(url);
    URLConnection c = u.openConnection();

    c.setDoOutput(true);
    if (c instanceof HttpURLConnection) {
        ((HttpURLConnection)c).setRequestMethod("POST");
    }

    OutputStreamWriter out = new OutputStreamWriter(
        c.getOutputStream());

    // output your data here

    out.close();

    BufferedReader in = new BufferedReader(
                new InputStreamReader(
                    c.getInputStream()));

    String s = null;
    while ((s = in.readLine()) != null) {
        System.out.println(s);
    }
    in.close();
}

接続に書き込む前に、POST データを urlencode() する必要がある場合があることに注意してください。

于 2008-11-27T15:34:40.837 に答える
3

新しいバージョンの HTTP で使用されるチャンク エンコーディングについて学ぶ必要があります。Apache HttpClient ライブラリは、学習するのに適した参照実装です。

于 2008-11-24T16:11:40.717 に答える