0

play 2.5.x ws library を内部サーバーへのファイルアップロードに使用しています。 apache http/curl/postmanで動作するサンプルコードがあります。 しかし、私はwsライブラリを使用しようとすると、その失敗方法。 私は両方の要求(ApacheのHTTP /プレイWS)からのリクエストヘッダをチェックしていると私は、「コンテンツ長」ヘッダ が不足していることが確認内部サーバーへのアクセスを持っていないし、そのいずれかのエラーメッセージjava再生フレームワークhttpリクエストでコンテンツ長のヘッダーを設定する

を返さないでくださいWSリクエストから。 私は

ws.url(url).setHeader().post(Source.from(Arrays.asList(fp,name) 

でそれを設定しようとしましたが、私は

"Stream has already been consumed and cannot be reset" 

を取得しています私は、コンテンツの長さを設定することができます方法はありますか?。 他にも何かがありますか?

答えて

0

残念ながら、これは適切に文書化されていないが、あなたのことができlook at the codepost(Source)どのように動作するかを理解するために:

// If the body has a streaming interface it should be up to the user to provide a manual Content-Length 
// else every content would be Transfer-Encoding: chunked 
// If the Content-Length is -1 Async-Http-Client sets a Transfer-Encoding: chunked 
// If the Content-Length is great than -1 Async-Http-Client will use the correct Content-Length 

-1がデフォルトです。

現在、Content-Lengthを設定するか、サーバーがチャンク転送を受け入れるようにしてください。

関連する問題