2011-08-31 12 views
0

誰かが私を助けてくれるのだろうかと思います。 Javaプロジェクトの場合、私はRestful Webサービスにデータを送信するJetty HttpClientを使用したいと思います。Jetty HttpClientでmultipart/form-data postを実行する方法

  1. ん桟橋クライアントのサポート、multipart/form-dataポスト: は、いくつかの質問をお持ちですか? Jetty docから、HttpExchange.setRequestContent(Buffer)またはHttpExchangge.setRequestContentSource(InputStream)メソッドを使用して、要求コンテンツを指定するために必要なすべてのデータを送信します。ファイルをアップロードするためにsetRequestContentSourceを使用すると、マルチパート投稿のファイル名のような追加のフォームパラメータをどのように設定できますか?

  2. Jettyクライアントを使用してアップロードの進行状況を確認する方法はありますか? Jettyは、onResponseContent、onResponseStatus、onRequestCommittedのような多くのコールバックを提供しますが、送信されたバイト数のモニタリングに役立つものはありません。 Jetty httpclientでアップロードの進捗状況を確認することは可能ですか?

事前に

をありがとう

答えて

1

あなたからMultiPartContentProvider

を使用する必要があります。 "マルチパート/フォームデータの" コンテンツタイプとフォームのアップロードhttp://download.eclipse.org/jetty/9.3.9.v20160517/apidocs/org/eclipse/jetty/client/util/MultiPartContentProvider.html

AのContentProvider。

使用例:

MultiPartContentProvider multiPart = new MultiPartContentProvider(); 
multiPart.addFieldPart("field", new StringContentProvider("foo"), null); 
multiPart.addFilePart("icon", "img.png", new PathContentProvider(Paths.get("/tmp/img.png")), null); 
multiPart.close(); 
ContentResponse response = client.newRequest("localhost", connector.getLocalPort()) 
    .method(HttpMethod.POST) 
    .content(multiPart) 
    .send(); 

上記の例では、このフォームを送信するのと等価であろう:

<form method="POST" enctype="multipart/form-data" accept-charset="UTF-8"> 
    <input type="text" name="field" value="foo" /> 
    <input type="file" name="icon" /> 
</form> 
関連する問題