- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
因此,我在 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 始终为 null
@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时,该值为null。
最佳答案
JAX-RS 规范没有说明如何处理 multipart/form-data。不同的 JAX-RS 实现有自己专有的方法来处理这个问题。据我所知,Apache Wink(我们构建于其之上)不支持@FormParam 的多部分。 Wink 中似乎确实有一些支持多部分的类型: http://wink.apache.org/documentation/1.1.1/html/7.8%20MultiPart.html但这些类并未由 Amdatu Wink bundle 公开,而且我也从未尝试过使用它。
我自己使用的解决方法是下面的示例。当使用 multipart 与其他表单字段一起上传文件时,这非常有用(这就是大多数使用 multipart 的原因)。我使用 Apache File Upload 来解析请求并访问上传的文件和表单字段。
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void test(@Context HttpServletRequest request) {
ServletFileUpload uploader = new ServletFileUpload(new DiskFileItemFactory());
try {
List<FileItem> parseRequest = uploader.parseRequest(request);
for (FileItem fileItem : parseRequest) {
if (fileItem.isFormField()) {
System.out.println(fileItem.getFieldName() + ": "
+ fileItem.getString());
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
关于java - Amdatu 多部分表单 @FormParam 始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21643724/
我有一个方法可以返回父记录的所有子记录(例如文档和行): public Datasource getSonsFromParent( @FormParam(value = "idparent") Lon
由于在此应用程序中动态创建 html 表单元素,因此元素的数量未知。如何使用@FormParam注解获取元素信息?例如,下面的代码获取两个表单元素的信息: @POST @Path("/
我的 html 中有以下内容 function myForm() { var url = 'rest/products/details/'; var fo
我将以下内容从浏览器传递到服务器 Status Code:204 No Content Request Method:POST Content-Type:application/x-www-form-
我正在使用最新版本的 Spring。我必须与A公司的第三方服务器集成。现在,A公司给了我这个代码: Path("/user") public class CallBacks { String
我正在使用 Indy10。我的服务器正在处理表单发布。 ARequestInfo.FormParams 正确包含未解析的表单参数。但是 ARequestInfo.Params.count 是 0。有没
我有 HTML 表单数据并被传递给 RESTful POST 方法。我注意到如果@FormParam 声明为 @POST public void commitProjects( @FormParam(
我正在为书籍和内容开发 Java“JAX-RS”Web 服务。将会有数百个类似的 URL ... https://api.example.com/v1.3/book1/chapter/1 https:
在 Java 中,我正在实现一个服务器,客户端可以在其中使用后查询传递一些数据(键值对)。我已经决定制作一个 REST 服务,并且我计划将 JAX-RS 与 Jetty 一起使用。 我之前不知道要发送
@FormDataParam 和@FormParam 有什么区别? 我在一个方法中使用了多个 @FormDataParam 但它抛出了媒体不支持的类型错误。但是当我使用 @FormParam 时,我得
谁能帮我解决这个问题。 我使用resteasy 和wildfly 8.1.0 创建了一个Web 服务,但@FormParam 总是返回null。 用户服务.java Path("/user") @Pr
因此,我在 Felix 框架内使用 Amdatu 来创建支持 OSGi 的 JSON Rest 服务。 当我使用@GET时,我得到了预期的id值 @GET @Produces(MediaType.AP
我正在制作一个REST客户端,它接收一个POST,其中包含用作查询的过滤器的数据。我的问题是当客户向我发送 "%" 来搜索所有值时。 Jersey 向我发送以下错误 11:36:35,857 ERRO
我正在使用 Java 和 Jersey 1.16。 @FormParam 参数的名称区分大小写吗?我可以以某种方式强制它不区分大小写吗? (希望以某种全局性的方式)。 最佳答案 您可以过滤请求: pu
我正在开发一个服务器端应用程序(不是客户端)。我有一个列表操作,其中使用 @GET 并将参数作为 @QueryParam 传递。我应该使用@FormParam 吗?对开发客户端有帮助吗? 最佳答案 @
我正在尝试通过 POST 向 RestAssured 端点提交一些 JSON。 API 需要一个 key 列表。我需要发送的值是一个包含单个项目的列表。 理想的请求如下: Request method
如果我有类似的东西: @PUT @Path("/login") @Produces({"application/json", "text/plain"}) @Consumes("application
我正在使用 Resteasy 学习 Web 服务 我正在做一个简单的基本示例,使用 @FormParam 轻松休息。我的示例在请求方法为 POST 时有效但是当我将请求方法更改为 GET 时不起作用
客户: 我确实像这样在 angular2 中发帖: doSelectMessagesAttributesUrl2(pushRequest : PushRequest) { console.in
免责声明:我确实详尽地搜索了这个问题的答案,是的,我确实找到了另一个问题:https://stackoverflow.com/questions/10315728/how-to-send-parame
我是一名优秀的程序员,十分优秀!