【发布时间】:2011-06-02 06:13:13
【问题描述】:
有谁知道如何使用 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)
{
..............
}
这是我使用元数据上传文件的 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("/{direcotry:.+}")
public Response doPut(@PathParam("directory")String data,byte[]contents,String meta)
{
..............
}
我的问题是当我上传没有元数据的文件时,我可以成功上传。但是当我添加元数据时,我无法从 doPut 方法中的 curl 命令中获取“--data”值。我该如何解决?
【问题讨论】:
-
@Path("/{direcotry:.+}") 是错字吗?
-
嗨 PeterMmm,@Path("/{directory:.+}") 是上传文件的路径。它正在工作。现在问题出在第二种方法“String meta”中,当我在 curl 中写入 --data 以获取元数据时,我无法获取值
-
但是如果仍然存在“/{direcotry:.+}”,您希望如何获得注入的值。 @PathParam("directory") 找不到匹配项。
-
我对 curl 不太熟悉,但如果我正确阅读手册页, --data 和 -T 是为请求设置 POST 数据的两种不同方式。所以我不知道如果你同时使用两者会发生什么。我不确定您希望 HTTP 请求是什么样的。
-
hi matrixfrog,是的,我意识到 --data 和 -T 不能同时使用。但我想从 PUT curl 命令传递参数以提供上传文件路径和一些数据同时。您有什么建议吗?谢谢
标签: java web-services rest httprequest file-upload