gpt4 book ai didi

java - 在 Spring MVC 中将请求写入文件

转载 作者:搜寻专家 更新时间:2023-11-01 01:18:44 25 4
gpt4 key购买 nike

我希望能够将整个请求写入 Spring MVC Controller 中的文件。

我尝试了以下方法,但即使我正在发出带有大量参数的 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 对象来代替编写 header 和参数:

@RequestMapping(method = RequestMethod.POST, value = "/payments/confirm")
public void receiveCallback(HttpServletRequest request) {
try {
StringBuilder sb = new StringBuilder();
sb.append("Headers:\n");
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
Enumeration<String> headers = request.getHeaders(headerName);
while (headers.hasMoreElements()) {
String headerValue = headers.nextElement();
sb.append(headerName).append(':').append(headerValue).append('\n');
}
}
sb.append("\nParameters:\n");
for(Entry entry: (Set<Entry>) request.getParameterMap().entrySet(){
sb.append(entry.getKey()).append(':').append(entry.getValue()).append('\n');
}
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);
}
}

关于java - 在 Spring MVC 中将请求写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6856415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com