【发布时间】:2023-03-11 01:12:01
【问题描述】:
所以我在 Felix 框架中使用 Amdatu 来创建启用 OSGi 的 JSON Rest 服务。
当我使用 @GET 时,我得到了预期的 id 值
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("file")
public String getFile(@QueryParam("id") String id) {
System.out.println("id : "+id);
return null;
}
当我使用@POST FormParam 时总是为空
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Path("file")
public String getFile(@FormParam("id") String id) {
System.out.println("id : "+id);
return null;
}
当我使用@POST 但使用应用程序 JSON 时,我总是得到整个原始 json 而不是值。
我关注了这个视频:http://www.amdatu.org/howto/createwebapp.html
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Path("file")
public String getFile(String id) throws Exception {
return id
}
我正在使用chrome的高级rest客户端插件来测试服务。
使用库
org.amdatu.web.rest.jaxrs:1.0.4
org.amdatu.web.rest.wink:1.0.8
jackson-jaxrs:1.9.13
jackson-mapper-asl:1.9.13
jackson-core-asl:1.9.13
更新:
我将 Maven 包中的依赖项设置为“提供”,方法是将它们更改为“编译” MediaType.APPLICATION_FORM_URLENCODED 现在可以工作。
但 MediaType.MULTIPART_FORM_DATA 仍然没有。
在表单发布期间,我的标题是:
Content-Type: multipart/form-data
如果我删除了@FormParam,则 id 将填充:
id : --ARCFormBoundary5xbnwa6as8aor
Content-Disposition: form-data; name="id"
9
--ARCFormBoundary5xbnwa6as8aor--
在我添加@FormParam 的那一刻,该值为空。
【问题讨论】:
-
您要发送多部分请求吗?对于普通形式,情况并非如此,因此由资源获取参数是正确的。
-
我的标题是:Content-Type: multipart/form-data
标签: java rest osgi multipartform-data amdatu