Java CXF拦截器-将请求正文转换为附件

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

我有一个问题,一些与我的API集成的客户机不符合标准(当然:)

因此,一些客户端没有添加文件附件,而是在请求正文中发送文件内容(标题错误)。这会导致CXF出现异常(找不到边界)

我已经实现了一个用于检查内容的InInterceptor。首先,我已经更改了内容类型,否则CXF将返回415错误

现在如何将纯文本输入请求正文转换为附件

@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