gpt4 book ai didi

java - 停止 Apache CXF 记录 MultipartBody 附件的二进制数据

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:44:29 24 4
gpt4 key购买 nike

我需要阻止 CXF 将附件的二进制数据记录到 MultipartBody 对象中(它被出站消息中的 AbstractLoggingInterceptor 抛出)。当我添加 LoggingInInterceptor 时,我将 setShowBinaryData 设置为 false,但这似乎并没有阻止记录多部分消息中的二进制数据。

我不确定我是否需要创建一个自定义的 loggingInInterceptor,或者是否有一种方法可以配置现有的拦截器来截断它找到的任何二进制数据。完全停止记录 MultipartBody 响应或截断数据都是可以接受的解决方案。

最佳答案

showBinaryContent 默认为 false,但是二进制数据是根据内容类型记录的,目前如果您的内容类型不是以下任何一种;二进制数据将被记录。

static {
BINARY_CONTENT_MEDIA_TYPES = new ArrayList<String>();
BINARY_CONTENT_MEDIA_TYPES.add("application/octet-stream");
BINARY_CONTENT_MEDIA_TYPES.add("image/png");
BINARY_CONTENT_MEDIA_TYPES.add("image/jpeg");
BINARY_CONTENT_MEDIA_TYPES.add("image/gif");
}

假设您的内容类型是application/zip,您可以创建自定义拦截器并覆盖 isBinaryContent,如下所示

import org.apache.commons.lang3.StringUtils;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.interceptor.LoggingMessage;

public class KPLogOutInterceptor extends LoggingOutInterceptor {

@Override
public boolean isBinaryContent(String contentType) {
return contentType != null && (BINARY_CONTENT_MEDIA_TYPES.contains(contentType)|| "application/zip".equals(contentType);
}
}

另一种不使用内容类型的方法如下所示。

import org.apache.commons.lang3.StringUtils;
import org.apache.cxf.interceptor.LoggingOutInterceptor;
import org.apache.cxf.interceptor.LoggingMessage;

public class KPLogOutInterceptor extends LoggingOutInterceptor {

@Override
protected String formatLoggingMessage(LoggingMessage loggingMessage) {

return removePayload(loggingMessage.toString());
}


private String removePayload(String str){

StringBuilder builder = new StringBuilder(str);
if (str.indexOf("Payload:") + 9 > 8) {
builder.setLength(builder.indexOf("Payload:") + 8);
builder.append(" <content skipped>\n");
builder.append(StringUtils.repeat('-', 25));
}
return builder.toString();
}
}

关于java - 停止 Apache CXF 记录 MultipartBody 附件的二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30214049/

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