我没有使用JSON或类似的东西.我有一个简单的表单来上传文件,我想读取表单的参数.以下代码无法按预期工作.它不会显示任何参数.
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Path("{appNum}/{docId}/file")
public Response uploadDocFile(
@PathParam("appNum") String appNum,
@PathParam("docId") String docId,
@Context HttpServletRequest req)
{
try {
log.info("POST Parameters:");
Enumeration e = req.getParameterNames();
while(e.hasMoreElements())
{
Object key = e.nextElement();
log.info("Key: " + key);
log.info("Val: " + req.getParameter(key.toString()));
}
} catch (Exception e) {
e.printStackTrace();
return Response.status(Status.INTERNAL_SERVER_ERROR).entity(new StatusResponse(e)).build();
}
return Response.ok().build();
}
Run Code Online (Sandbox Code Playgroud)
Jam*_*mol 19
我也有同样的问题.使用@FormParam单个参数的注释可以正常工作,但是从HttpServletRequest注入中读取它们@Context不会.我还试图通过Guice使用Provider<HttpServletRequest>和获取请求对象/参数@RequestParameters<Map<String, String[]>>.在这两种情况下都没有帖子参数.
但是,可以通过向MultivaluedMap<String, String>resource方法添加参数来获取参数映射.例:
@POST
public void doSomething(MultivaluedMap<String, String> formParams) {
//...
}
Run Code Online (Sandbox Code Playgroud)
如果您在JAVA 中使用Jersey RESTful API,则可以查找参数注释(@*Param)
例:
相关性:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.8</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
码:
package yourpack;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
@Path("/path_to_data")
public class DataResource {
@GET
@Path("/{param}")
public Response getMsg(@PathParam("param") String urlparam) {
int ok = 200;
String result = "Jersey Data resource: " + urlparam;
return Response.status(ok).entity(result ).build();
}
}
Run Code Online (Sandbox Code Playgroud)
注释列表:@MatrixParam,@HeaderParam,@CookieParam,@FormParam,@QueryParam,@PathParam
| 归档时间: |
|
| 查看次数: |
58160 次 |
| 最近记录: |