いくつかのフォームパラメータをHTTPリクエスト(その1つがファイルです)を介してサーバーに送信する必要があります。だから、私は私が何とかを考え出す必要がある他の記事から理解Apache HTTPクライアント4フォーム投稿マルチパートデータ
the request was rejected because no multipart boundary was found
at org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.<init>(FileUploadBase.java:954)
at org.apache.commons.fileupload.FileUploadBase.getItemIterator(FileUploadBase.java:331)
at org.apache.commons.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:351)
at org.apache.commons.fileupload.servlet.ServletFileUpload.parseRequest(ServletFileUpload.java:126)
at org.springframework.web.multipart.commons.CommonsMultipartResolver.parseRequest(CommonsMultipartResolver.java:156)
...そう...
HttpPost httpPost = new HttpPost(urlStr);
params = []
params.add(new BasicNameValuePair("username", "bond"));
params.add(new BasicNameValuePair("password", "vesper"));
params.add(new BasicNameValuePair("file", payload));
httpPost.setEntity(new UrlEncodedFormEntity(params));
httpPost.setHeader("Content-type", "multipart/form-data");
CloseableHttpResponse response = httpclient.execute(httpPost);
サーバーがエラーを返したように、スタックトレースがあるのApache HTTPクライアントを使用します境界は、コンテンツには見つからない文字列です。しかし、私は上記のコードでこの境界をどのように作成するのですか?別のパラメータにする必要がありますか?ちょうどコードサンプルが私の必要なものです。
よろしいですか。申し訳ありませんが、あなたが答えを受け入れると、私はそれがあなたのために働いていると思いました。あなたの調査結果をもとに私の答えを更新します。 – gustf
もう一度、ビルダーを使用する同等のコードで回答を更新しました。私はまた、元のコードとの違いをチェックしました:1) 'addPart(" file "、新しいFileBody(ペイロード)'を他の部分より前に置く2)charset、あなたのコードの非推奨のコンストラクタのデフォルトは 'ASCII'です。 。私のオリジナルでは、デフォルトは 'ISO_8859_1'です。これは通常どんな問題でもないはずですので、私の考えはそれが奇妙でも最初のものであるということです。しかし、多分これは 'MultipartHttpServletRequest'が動作する方法です、私は分かりません。これをテストする時間と時間があれば、それは素晴らしいことでしょう。 – gustf