如何获取参数';java中RESTWeb服务中curl的值

如何获取参数';java中RESTWeb服务中curl的值,java,web-services,rest,httprequest,file-upload,Java,Web Services,Rest,Httprequest,File Upload,有人知道如何使用java从REST web服务中的curl命令获取参数值吗?我已经在NetBean IDE中使用jersey框架和java编写了一个REST web服务。 这是我的curl命令,用于上传不带元数据的文件: curl -T C:\Users\Folders\a.jpg -H "Content-Type:application/vnd.org.snia.cdmi.dataobject" http://localhost:8080/users/folder/a.jpg 这是我上传的

有人知道如何使用java从REST web服务中的curl命令获取参数值吗?我已经在NetBean IDE中使用jersey框架和java编写了一个REST web服务。 这是我的curl命令,用于上传不带元数据的文件:

curl -T C:\Users\Folders\a.jpg -H "Content-Type:application/vnd.org.snia.cdmi.dataobject" http://localhost:8080/users/folder/a.jpg 
这是我上传的HttpPut方法

@PUT
@Path("/{directory:.+}")
public Response doPut(@PathParam("directory")String data,byte[]contents)
{
..............
}
@PUT
@Path("/{direcotry:.+}")
public Response doPut(@PathParam("directory")String data,byte[]contents,String meta)
{
..............
}
这是我上传带有元数据的文件的curl命令

curl  --data " { "metadata" : "Username":"name"}" -T C:\Users\Folders\a.jpg -H "Content-Type:application/vnd.org.snia.cdmi.dataobject" http://localhost:8080/users/folder/a.jpg 
这是我上传的HttpPut方法

@PUT
@Path("/{directory:.+}")
public Response doPut(@PathParam("directory")String data,byte[]contents)
{
..............
}
@PUT
@Path("/{direcotry:.+}")
public Response doPut(@PathParam("directory")String data,byte[]contents,String meta)
{
..............
}

我的问题是,当我上传没有元数据的文件时,我可以成功上传。但当我添加元数据时,我无法从doPut方法中的curl命令中获取“-data”值。如何解决这个问题?

如果您需要在一个请求中提交二进制数据块(jpg)和一些元数据(json字符串),我建议您提交一个表单的请求(内容类型
应用程序/x-www-form-urlencoded
)。这允许您在请求正文中包含这两个项目

请求中的每一项都使用注释映射到一个方法参数,因此您可以得到如下结果:

@PUT
@Path("/{directory:.+}")
@Consumes("application/x-www-form-urlencoded")
public Response doPut(@PathParam("directory") String directory,
                      @FormParam byte[] image,
                      @FormParam String metadata) {
    ...
}

有关如何继续使用curl测试的详细信息,请参阅参数。

@Path(“/{direcotry:.+}”)是否输入错误?嗨,Petermm,@Path(“/{directory:.+}”)是上载文件的路径。它正在工作。现在的问题是在第二个方法“stringmeta”中,当我在curl中写入--data以获取元数据时,我无法获取值,但是如果仍然存在“/{direcotry:.+}”,您希望如何获取注入的值@PathParam(“目录”)找不到匹配项。我对curl不太熟悉,但如果我正确阅读手册页,-data和-t是为请求设置POST数据的两种不同方式。所以我不知道如果你同时使用两者会发生什么。我不确定您希望HTTP请求是什么样子。您好matrixfrog,是的,我意识到--data和-T不能同时使用。但是我想通过PUT curl命令传递参数,同时给出上传文件路径和一些数据。您有什么建议吗?谢谢