如何删除Mule默认标头并设置从第三方API收到的标头

时间:2016-02-17 09:49:30

标签: http groovy header mule

请帮助设置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;

提前致谢!

1 个答案:

答案 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"/>

希望这有帮助

此致