XFC*_*FCC 10 html java rest jax-ws jersey
我试图从带有球衣的表格中获取一些数据,虽然这将是一项容易完成的任务,但是当我尝试发布一些内容时,我收到了一个错误.
Caused by: java.lang.IllegalStateException: The @FormParam is utilized when the content type of the request entity is not application/x-www-form-urlencoded
at org.glassfish.jersey.server.internal.inject.FormParamValueFactoryProvider$FormParamValueFactory.ensureValidRequest(FormParamValueFactoryProvider.java:126)
at org.glassfish.jersey.server.internal.inject.FormParamValueFactoryProvider$FormParamValueFactory.getForm(FormParamValueFactoryProvider.java:111)
at org.glassfish.jersey.server.internal.inject.FormParamValueFactoryProvider$FormParamValueFactory.get(FormParamValueFactoryProvider.java:94)
at org.glassfish.jersey.server.internal.inject.AbstractHttpContextValueFactory.provide(AbstractHttpContextValueFactory.java:65)
at org.glassfish.jersey.server.spi.internal.ParameterValueHelper.getParameterValues(ParameterValueHelper.java:80)
... 36 more
Run Code Online (Sandbox Code Playgroud)
我认为这是堆栈跟踪的相关部分.现在我正在使用的代码:
@POST
@Path("/delete")
@Produces("application/json")
public String delete(@FormParam("id")String id){
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用像这样的测试html页面进行POST:
<form action="<path to the server>/delete" method="post">
primary_id: <input type="text" name="primary_id" /><br />
<input type="submit" value="Submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
我一直试图让它发挥作用,但没有机会.我尝试使用multipart-form-data添加@Consumes()注释,但不能真正使它工作.我希望有人可以帮我一臂之力.
谢谢大家的帮助.通过一些代码审查,我发现了问题.即使我认为没有其他人会犯这个特别的错误,我也会发布它以供将来参考.
问题是我没有使用标准的Web服务器.我已经用Jersey实现了一个netty服务器,问题出在那个实现上.问题是我没有按照我的要求将HTTP请求中的标头传递给Jersey.我在操作过程中丢失了Content-Type,这意味着Jersey无法识别消息类型.
所以,为了将来参考,对于在尝试使用jersey实现非标准服务器时遇到类似问题的任何人:当你没有正确传递媒体类型时(在ContentRequest类中有一个名为getMediaType()的方法,它被使用除其他事项外,在使用@FormParam时验证Content-Type,你会得到这种类型的异常.
再次,谢谢大家的帮助:)
| 归档时间: |
|
| 查看次数: |
21329 次 |
| 最近记录: |