Java 获取上下文HttpServletRequest的正文内容
我正在使用Jersey,我正在尝试使用与此问题非常类似的方法访问请求主体: 如何使用Jersey读取RESTful服务的请求正文? 我和邮递员一起寄出了我的身价Java 获取上下文HttpServletRequest的正文内容,java,rest,jersey,Java,Rest,Jersey,我正在使用Jersey,我正在尝试使用与此问题非常类似的方法访问请求主体: 如何使用Jersey读取RESTful服务的请求正文? 我和邮递员一起寄出了我的身价 @Path("/updateanfrage") public class UpdateAnfrage extends ResourceConfig { private static final Logger log = Logger.getLogger(UpdateAnfrage.
@Path("/updateanfrage")
public class UpdateAnfrage extends ResourceConfig
{
private static final Logger log = Logger.getLogger(UpdateAnfrage.class);
@POST
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public UpdateInformation beschaffeUpdateInformation(ClientInformation clientinformation,
@Context HttpHeaders headers, @Context UriInfo uriDetails, @Context Request request, @Context HttpServletRequest requestContext) throws SecurityException, IOException
{
UpdateInformation updateinformation = new UpdateInformation();
log.info("Method -- " + request.getMethod());
log.info("Complete URI -- "+ uriDetails.getRequestUri().toString());
log.info("Content Type -- "+ requestContext.getContentType());
// log.info("Body -- "+ requestContext.getReader().lines());
...
...
return updateinformation;
}
一种方法是创建一个过滤器(实现
ContainerRequestFilter
)并处理输入流
@Provider
@PreMatching
public class LoggingFilter implements ContainerRequestFilter{
@Override
public void filter(ContainerRequestContext req){
//init logger
final Logger logger = Logger.getLogger(UpdateAnfrage.class);
BufferedReader br = new BufferedReader(new InputStreamReader(req.getEntityStream(),"UTF-8"));
StringBuilder xml = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
xml.append(line);
}
req.setEntityStream(new ByteArrayInputStream(xml.toString().getBytes("UTF-8")));
logger.info(xml);
}
}
创建一个ClientInformation POJO并使用JAXB对其进行注释。然后,您可以直接访问BeschafeUpdateInformation方法中的clientInformation。此方法还应返回UpdateInformation的实例。我想读取XML(字符串)并将其写入文件log.txt客户端信息是什么样子的?导入javax.XML.bind.annotation.XmlRootElement;导入javax.xml.bind.annotation.XmlType@XmlRootElement(name=“ClientInformation”)@XmlType(proporter={“firma”,“version”,“personaliserung”})公共类ClientInformation{public firma firma;public version version;public personaliserung personaliserung;//默认构造函数public ClientInformation(){firma=new firma();version=new version();personaliserung=new personaliserung();}}}用这些信息更新您的问题,很难将其理解为评论。您还可以分别添加Firma和Version的定义。