-1

を使用してフォーム送信の HttpPost リクエストをシミュレートしようとしていますHttpClient 4.2.3

フォームは似ています

<form action="localhost/xyz.aspx" method = "post" enctype="multipart/form-data">
     <input type="text" name="name">
     <input type="text" name="age">
     <input type="text" name="submit">
</form>

次のようなJavaコードを使用しようとしたとき、

 List<NameValuePair> formparams1 = new ArrayList<NameValuePair>();
 formparams1.add(new BasicNameValuePair("name","john"));
 formparams1.add(new BasicNameValuePair("age", "10"));
 UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams1);
 entity.setContentEncoding("multipart/form-data");
 entity.setContentType("multipart/form-data;boundary=--asd123");

HTTP ステータス 400 - java.lang.RuntimeException: パーツ内に Content-Disposition ヘッダーが見つかりませんでし

また、しばらく検索して別の方法を試しましたが、

MultipartEntity entity = new MultipartEntity();
entity.addPart("name",new StringBody("john",Charset.forName("UTF-8")));
entity.addPart("age", new StringBody("10",Charset.forName("UTF-8")));

それでもHTTP 415 HTTP 400のようなエラーが発生します

そのようなリクエストをシミュレートするのを手伝ってくれる人はいますか。

ティア

4

1 に答える 1

1

送信するマルチパート エンティティには、2 つのオブジェクトを設定する必要がFileBodyありStringBodyます。設定しているのは のみStringBodyです。

つまり、マルチパート リクエストは通常​​、ファイルで構成されます。サーバーには、ファイル名 ( を使用して設定StringBody) とファイルの内容 ( を使用して設定)が必要FileBodyです。

例えば。

FileBody name = new FileBody(new File(fileName));
StringBody content = new StringBody("Filename: " + fileName);

MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("name", bin);
reqEntity.addPart("content", content);
httppost.setEntity(reqEntity);

あなたの場合、マルチパートコンテンツを送信していないようです。そのエンコーディングタイプを使用しているかどうかはわかりません!

于 2013-01-16T07:30:03.497 に答える