3

このようなクライアントと

StringBody body = new StringBody("form_username", Charset.forName("UTF-8"));
multipart.addPart("username", body);
ByteArrayBody bBody = new ByteArrayBody(bs, "form_command.dat");
multipart.addPart("data", bBody);
httppost.setEntity(multipart);

値はnettyサーバーでどのように取得されることになっていますか。すでにHttpRequestDecoderがパイプラインに追加されています。そしてmessageReceivedはこのように処理されました

HttpRequest request = (HttpRequest) e.getMessage();
    this.mRequest = request;


    if (is100ContinueExpected(request)) {
        send100Continue(e);
    }

    ChannelBuffer content = request.getContent();
    if (content.readable()) {

        System.out.println("Content()\n" + content.toString(CharsetUtil.UTF_8) + "\r\n");


    }

出力を印刷します。

Content()
--Xdq2t6unVsUp191MKhpR6BXz5P7Eoo
Content-Disposition: form-data; name="username"
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

form_username
--Xdq2t6unVsUp191MKhpR6BXz5P7Eoo
Content-Disposition: form-data; name="data"; filename="form_command.dat"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary



--Xdq2t6unVsUp191MKhpR6BXz5P7Eoo--


End of contents
4

1 に答える 1

1

新しいHttpPostRequestDecoderを使用する必要があります。これは、今後のNetty 3.5(3ブランチ)およびNetty 4(マスターブランチ)でのみ使用できます。

ここに使用例があります。

今すぐ使用する必要がある場合は、このプルリクエストに記載されているファイルをプロジェクトの名前空間にコピーして使用できます。

お役に立てれば。

于 2012-05-14T02:03:44.360 に答える