2

Java コードを介してマルチパートのフォームデータ ポストを送信しようとしています。次のコンテンツの長さを設定する方法を教えてもらえますか?? ContentDescriptor インターフェイスを実装する InputStreamBody を使用する場合、関連するヘッダーがあるようです。InputStreamBody で getContentLength を実行すると、コンテンツを追加した後に -1 が返されます。contentLength にバイト配列の長さを与えるようにサブクラス化しましたが、ContentDescriptor に必要な他のヘッダーが適切な POST に設定されるかどうかはわかりません。

HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(myURL);
ContentBody cb = new InputStreamBody(new ByteArrayInputStream(bytearray), myMimeType, filename);
//ContentBody cb = new ByteArrayBody(bytearray, myMimeType, filename);

MultipartEntity mpentity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
mpentity.addPart("key", new StringBody("SOME_KEY"));
mpentity.addPart("output", new StringBody("SOME_NAME"));
mpentity.addPart("content", cb);
httpPost.setEntity(mpentity);
HttpResponse response = httpclient.execute(httpPost);

HttpEntity resEntity = response.getEntity();
4

1 に答える 1

3

私はあなたがコメントアウトした ByteArrayBody クラスの作成者です。

あなたと同じ問題に直面したので、私はそれを書きました。元の Jira チケットはこちら: https://issues.apache.org/jira/browse/HTTPCLIENT-1014

したがって、すでに byte[] があるため、HttpMime をこのクラスを含む最新バージョンの 4.1-beta1 にアップグレードします。または、コードを Jira 課題から独自のプロジェクトにコピーします。

ByteArrayBody クラスはまさに必要なことを行います。

于 2010-12-28T22:08:34.080 に答える