请帮助设置mule中的HTTP标头。我想删除默认的mule标头,并将从第三方API收到的HTTP标头作为响应标头发送
我尝试使用以下groovy代码。但它没有用。
import org.json.JSONObject;
import java.lang.String;
import java.util.*;
import java.util.Map;
import java.util.Map.Entry;
JSONObject cResponse = new JSONObject(payload);
System.out.println("http.headers:"+message.getInboundProperty('http.headers'));
Map<String, Object> headers = (Map<String, Object>) message.getInboundProperty('http.headers');
System.out.println("111"+headers);
payload.removeHeader(payload.removeHeaders("Server"));
for (Entry<String, Object> entry : headers.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
System.out.println("Key & Values are: "+key +" & "+ value);
message.setInvocationProperty(key, value);
}
payload=cResponse;
提前致谢!
答案 0 :(得分:3)
您不需要使用groovy或任何java代码,只需使用remove属性和copy属性组件即可。 例如,此片段会将所有入站http复制到出站,并删除以某些常用字符串为前缀的属性。
<remove-property propertyName="MULE_*"/>
<remove-property propertyName="X_MULE*"/>
<remove-property propertyName="x-mule*"/>
<copy-properties propertyName="http.*"/>
但是,我建议您继续删除Mule属性,但是为了从入站填充出站属性,我会进行选择性复制以避免不必要的行为。你可以这样做。
<remove-property propertyName="MULE_*"/>
<remove-property propertyName="X_MULE*"/>
<remove-property propertyName="x-mule*"/>
<copy-property propertyName="Content-Length"/>
<copy-property propertyName="Transfer-Encoding"/>
<copy-property propertyName="Keep-Alive"/>
<copy-property propertyName="Connection"/>
希望这有帮助
此致