【问题标题】:How to remove Mule default headers and set Headers received from Third party API如何删除 Mule 默认标头并设置从第三方 API 接收的标头
【发布时间】:2016-02-17 09:49:29
【问题描述】:

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

提前致谢!

【问题讨论】:

    标签: http groovy header mule


    【解决方案1】:

    您不需要使用 groovy 或任何 java 代码,您只需使用删除属性和复制属性组件即可。 例如,这个 sn-p 会将所有入站 http 复制到出站并删除带有一些 mule 通用字符串前缀的属性。

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

    希望对你有帮助

    问候

    【讨论】:

      猜你喜欢
      • 2021-10-09
      • 2020-06-05
      • 1970-01-01
      • 2011-03-26
      • 2015-09-26
      • 2014-10-16
      • 1970-01-01
      • 2020-01-15
      • 2023-01-31
      相关资源
      最近更新 更多