Java CXF拦截器-将请求正文转换为附件
我有一个问题,一些与我的API集成的客户机不符合标准(当然:) 因此,一些客户端没有添加文件附件,而是在请求正文中发送文件内容(标题错误)。这会导致CXF出现异常(找不到边界) 我已经实现了一个用于检查内容的InInterceptor。首先,我已经更改了内容类型,否则CXF将返回415错误 现在如何将纯文本输入请求正文转换为附件Java CXF拦截器-将请求正文转换为附件,java,apache,request,cxf,attachment,Java,Apache,Request,Cxf,Attachment,我有一个问题,一些与我的API集成的客户机不符合标准(当然:) 因此,一些客户端没有添加文件附件,而是在请求正文中发送文件内容(标题错误)。这会导致CXF出现异常(找不到边界) 我已经实现了一个用于检查内容的InInterceptor。首先,我已经更改了内容类型,否则CXF将返回415错误 现在如何将纯文本输入请求正文转换为附件 @Override public void handleMessage(Message message) throws Fault { Map<Strin
@Override
public void handleMessage(Message message) throws Fault {
Map<String,List> map = (Map<String, List>)message.get(Message.PROTOCOL_HEADERS);
if(url != null && url.indexOf("uploadFile") > 0) { //TODO && !Content-type = multipart/form-data
message.remove(Message.CONTENT_TYPE);
message.put(Message.CONTENT_TYPE, "multipart/form-data");
map.put("content-type", Collections.singletonList("multipart/form-data"));
message.put(Message.PROTOCOL_HEADERS, map);
}
InputStream is = message.getContent(InputStream.class);
StringWriter writer = new StringWriter();
try {
IOUtils.copy(is, writer, "UTF-8");
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String requestBody = writer.toString();
System.out.println(requestBody);
}
如果不正确(请求正文中的纯文本),则输入流如下所示:
FILE CONTENT
这将导致“边界未找到异常”。当然,我现在在这段代码中遇到了“Stream closed”(流关闭)异常,但这只是因为我处于寻找解决方案的模式。您在哪里向邮件添加附件?我没有。我想知道怎么做:)当然,只有在请求没有附件和请求正文的情况下。你有什么解决方案吗?我也有同样的问题,我无法添加多部分数据。这是我的问题,如果你有任何链接,请发送
FILE CONTENT