私はresteasyとmultipartフォームに問題があり、誰かが同じ問題を抱えているか、そうでなければ私を助けてくれることを望んでいました。ポーホーを使用したマルチパート/フォームデータの再エンコード
私の目標は、ファイルといくつかのパラメータを同時にアップロードすることです。このすべては、文字エンコーディングをを破られという事実を除いて、うまく機能
public class UserRequestForm
{
@FormParam("name")
String name;
@FormParam("blob")
@PartType("application/octet-stream")
byte[] image;
public String getName()
{
return name;
}
public void setName(String n)
{
this.name =n;
}
public byte[] getImage()
{
return image;
}
public void setImage(byte[] image)
{
this.image = image;
}
}
:UserRequestFormフォームされた状態で
@PUT
@Path("/userdebug1/{userId}")
@Consumes("multipart/form-data")
@Produces("application/json;charset=UTF-8")
public String updateUserDebug1(@MultipartForm UserRequestForm request)
{
return request.getName();
}
:私は、これはPOJOフォームに注釈付き@MultipartFormを使用してみました。ウムラウトを使用すると、正しく戻されません。一方、次の方法を使用する場合:
@PUT
@Path("/userdebug2/{userId}")
@Consumes("multipart/form-data")
@Produces("application/json;charset=UTF-8")
public String updateUserDebug2(MultipartFormDataInput form)
{
try {
return form.getFormDataMap().get("name").get(0).getBodyAsString();
} catch (IOException e) {
e.printStackTrace();
}
return "error";
}
私はcharlesproxyを使用して、両方のURLを同じリクエストで送信しています。ここにその一つがあります。もう1つはURLだけが違う。
PUT /api/v1/userdebug1/A4BE364C-15F8-59B0-87C3-DCA0A123644A HTTP/1.1
Host: localhost:8081
Content-Type: multipart/form-data; charset=utf-8; boundary=0xKhTmLbOuNdArY-5C999EAA-3828-4919-98B7-19D4FD738814
Accept-Encoding: gzip
Connection: close
Content-Length: 205
--0xKhTmLbOuNdArY-5C999EAA-3828-4919-98B7-19D4FD738814
Content-Disposition: form-data; name="name"
Content-Type: text/plain;charset=utf-8
ü
--0xKhTmLbOuNdArY-5C999EAA-3828-4919-98B7-19D4FD738814--
(POJOのフォームを使用して)応答1:(MultipartFormDataInputを使用して)
�
レスポンス2:
ü
任意のアイデア?私は何か間違っているのですか?これはバグですか?
ありがとうございました。素晴らしいstackoverflowコミュニティ。あなたはすでに大きな助けになっています。これが初めての場合でも私は質問をしました。
私は2.3.5にアップグレードしました。最終的には固定されています。 – bert