【发布时间】:2015-05-10 13:37:03
【问题描述】:
我已经按照以下链接开发了一个网络服务,但是我无法从 POST 请求正文中获取请求参数。
http://info.appdirect.com/blog/how-to-easily-build-rest-web-services-with-java-spring-and-apache-cxf
我使用 Soap UI 来调用 服务,选中“在消息正文中发布 QueryString”选项。 到目前为止,我已经尝试了以下选项,但似乎都不起作用:
-
试过多值映射,但映射总是空的。
@POST @Path("/getpostfile/{fileName}") @Produces("application/pdf") @Consumes("application/x-www-form-urlencoded") public Response getPostFile(MultivaluedMap form){...} 也尝试了 @FormParam() 和 @QueryParam,但 webservice 方法中的参数仍然为空。
-
尝试使用 @XmlRootElement 注释创建一个 POJO bean,但是这次我得到一个异常说 "SEVERE: No message body reader has found for class com.wcc.LoginInfo, ContentType : 应用程序/x-www-form-urlencoded"。 LoginInfo 是我的 bean 类,有两个参数:
@XmlRootElement public class LoginInfo { String username; String password; ....
服务方法如下:
@POST
@Path("/getpostfile/{fileName}")
@Produces("application/pdf")
@Consumes("application/x-www-form-urlencoded")
public Response getPostFile(LoginInfo logininfo){...}
下面是我的 cxf-beans.xml 文件:
<bean .....>
<jaxrs:server id="wccservice" address="/">
<jaxrs:serviceBeans>
<ref bean="wccdocumentservice" />
</jaxrs:serviceBeans>
<jaxrs:providers>
<ref bean="formUrlEncodeProvider" />
</jaxrs:providers>
</jaxrs:server>
<bean id="wccdocumentservice" class="com.wcc.WCCDocumentServiceImpl" />
<bean id="formUrlEncodeProvider" class="org.apache.cxf.jaxrs.provider.FormEncodingProvider" />
<bean id="jsonProvider" class="org.apache.cxf.jaxrs.provider.json.JSONProvider">
<property name="marshallAsJaxbElement" value="true" />
</bean>
关于如何在 Webservice 方法中检索请求正文中的 POST 参数有什么想法吗?
【问题讨论】:
-
我也有同样的问题..你找到什么了吗?
标签: web-services cxf jax-rs