【问题标题】:how to get parameters' value from curl in REST web service in javajava - 如何从java中REST Web服务中的curl获取参数的值
【发布时间】: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


【解决方案1】:

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

请求中的每一项都使用@FormParam 注解映射到一个方法参数,所以你会有这样的东西:

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

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

【讨论】:

    猜你喜欢
    • 2011-08-18
    • 2023-03-21
    • 2014-04-21
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多