使用 REST 客户端调用 multipart/form-data Rest Web 服务

发布于 2024-11-02 12:22:09 字数 1309 浏览 5 评论 0原文

我有一个基于 RESTeasy 的 REST Web 服务(见下文)。我正在尝试使用 google REST 客户端执行请求来测试我的服务,但我不确定应该如何设置该请求。

我不确定如何将 byte[] 作为参数 (filedata) 发送。
关于如何测试这个有什么想法吗?

我得到以下异常:

java.io.IOException:无法获取多部分的边界

java.io.IOException:无法使用

request:
-content-type=multipart/form-data
-form params:
test=testvalue

@POST
@Path("/upload")
@Consumes("multipart/form-data")
public Response create(@MultipartForm FileUploadForm form) {
   System.out.println("form=" + form.getTest());
   return null;
}

FileUploadForm Pojo:

import javax.ws.rs.FormParam;
import org.jboss.resteasy.annotations.providers.multipart.PartType;

public class FileUploadForm {
    private byte[] filedata;
    private String test;

    public FileUploadForm() {}

    public byte[] getFileData() {
        return filedata;
    }

    @FormParam("filedata")
    @PartType("application/octet-stream")
    public void setFileData(final byte[] filedata) {
        this.filedata = filedata;
    }

    public String getTest() {
        return test;
    }

    @FormParam("test")
    @PartType("application/json")
    public void setTest(String test) {
        this.test = test;
    }   
}

I have a RESTeasy-based REST web service (see below). I'm trying to use the google REST client to execute a request to test my service, but I'm unsure as to how the request should be setup.

I'm not sure how to send the byte[] as a param (filedata).
Any ideas on how to test this?

I get the following exception:

java.io.IOException: Unable to get boundary for multipart

with

request:
-content-type=multipart/form-data
-form params:
test=testvalue

Rest method:

@POST
@Path("/upload")
@Consumes("multipart/form-data")
public Response create(@MultipartForm FileUploadForm form) {
   System.out.println("form=" + form.getTest());
   return null;
}

FileUploadForm Pojo:

import javax.ws.rs.FormParam;
import org.jboss.resteasy.annotations.providers.multipart.PartType;

public class FileUploadForm {
    private byte[] filedata;
    private String test;

    public FileUploadForm() {}

    public byte[] getFileData() {
        return filedata;
    }

    @FormParam("filedata")
    @PartType("application/octet-stream")
    public void setFileData(final byte[] filedata) {
        this.filedata = filedata;
    }

    public String getTest() {
        return test;
    }

    @FormParam("test")
    @PartType("application/json")
    public void setTest(String test) {
        this.test = test;
    }   
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

请远离我 2024-11-09 12:22:09

您需要将此标头添加到您的请求中:

Accept-Encoding:multipart/form-data

通常您使用这样的内容类型:

Content-Type: image/png

您可以使用 Postman REST 客户端

我已附上一张有关如何填写表单的图像。

postman multipart/form-data

You need to add this header to your request:

Accept-Encoding:multipart/form-data

usually you use Content type like this:

Content-Type: image/png

You can test it with Postman REST client

I've attached an image on how the form should be filled out.

postman multipart/form-data

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文