java 写入请求头_java – 在Spring MVC中写入文件请求

我希望能够将整个请求写入Spring MVC控制器中的文件.

我已经尝试了以下内容,但即使我正在使用大量参数发出POST请求,该文件仍然是空的:

@RequestMapping(method = RequestMethod.POST, value = "/payments/confirm")

public void receiveCallback(ServletInputStream inputStream)

{

try

{

inputStream.reset();

byte[] data = IOUtils.toByteArray(inputStream);

File file = new File(System.getProperty("java.io.tmpdir") + "test" + System.currentTimeMillis() + ".txt");

FileOutputStream fos = new FileOutputStream(file);

fos.write(data);

fos.close();

}

catch (Exception e)

{

logger.error("Error writing request", e);

}

}

我也尝试过使用HttpServletRequest.getInputStream(),但结果相同.

最佳答案

使用InputStream不起作用(参见BalusC的回答).以下是如何使用HTTPServletRequest对象来编写标头和参数的示例:

@RequestMapping(method = RequestMethod.POST, value = "/payments/confirm")

public void receiveCallback(HttpServletRequest request) {

try {

StringBuilder sb = new StringBuilder();

sb.append("Headers:

");

Enumeration headerNames = request.getHeaderNames();

while (headerNames.hasMoreElements()) {

String headerName = headerNames.nextElement();

Enumeration headers = request.getHeaders(headerName);

while (headers.hasMoreElements()) {

String headerValue = headers.nextElement();

sb.append(headerName).append(':').append(headerValue).append('

');

}

}

sb.append("

Parameters:

");

for(Entry entry: (Set) request.getParameterMap().entrySet(){

sb.append(entry.getKey()).append(':').append(entry.getValue()).append('

');

}

byte[] data = sb.toString().getBytes();

File file = new File(System.getProperty("java.io.tmpdir") + "test"

+ System.currentTimeMillis() + ".txt");

FileOutputStream fos = new FileOutputStream(file);

fos.write(data);

fos.close();

} catch (Exception e) {

logger.error("Error writing request", e);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值