mule esb outbound https无效内容类型

时间:2014-11-12 23:27:18

标签: java http mule esb

我正在使用Mule 3.4.0并使用HTTPS出站端点创建一个在JIRA服务器上调用某些RESTful API端点的流。我遇到了问题,因为Mule由于某种原因发送了一个在JIRA中导致异常的Content-Type标头值。看起来,从JIRA堆栈跟踪来看,Mule正在发送这个:

  

application / json,application / json; charset = UTF-8

JIRA正在使用Jersey,而Jersey无法解析该Content-Type值。以下是JIRA返回的堆栈跟踪的一部分:

  

引起:java.lang.IllegalArgumentException:解析媒体类型' application / json,application / json; charset = UTF-8'       at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:79)       at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:53)       在javax.ws.rs.core.MediaType.valueOf(MediaType.java:119)       在com.sun.jersey.server.impl.model.HttpHelper.getContentType(HttpHelper.java:89)       ......还有157个   引起:java.text.ParseException:预期的分隔符&#39 ;;'而不是','       在com.sun.jersey.core.header.reader.HttpHeaderReader.nextSeparator(HttpHeaderReader.java:117)       在com.sun.jersey.core.header.reader.HttpHeaderReader.readParameters(HttpHeaderReader.java:239)       at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.valueOf(MediaTypeProvider.java:97)       at com.sun.jersey.core.impl.provider.header.MediaTypeProvider.fromString(MediaTypeProvider.java:77)

我希望能够强制发送特定的Content-Type值,但我无法弄清楚如何做到这一点。看起来Mule会根据多种因素自动构建Content-Type值:

http://www.mulesoft.org/documentation/display/current/HTTP+Transport+Reference

  

如果端点明确设置了编码,请使用它       否则,从消息的属性Content-Type中获取它       如果未设置这些,请使用Mule Context的配置默认值。       对于Content-Type,发送消息的属性Content-Type,但使用实际的编码集。

所以我认为它使用的是入站属性Content-Type,但由于这是一个入站属性,我认为我不能在流中修改/删除它。我尝试修改/删除Content-Type属性无效。我只能修改/删除出站的Content-Type属性,这似乎对我的出站HTTP请求没有帮助。

有关如何控制Content-Type值或修复它的任何信息,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

我花了一些时间使用调试和断点,发现在第一个HTTPS出站端点之后,有一个" Content-Type" 变量入站或出站属性)正在设置为" application / json"。我不知道为什么会这样。对于HTTP传输或HTTP端点,我在文档中没有看到任何内容。如果有人可以指出有关那里发生的事情的文档会很棒。

作为一项实验,在我的下一个HTTPS出站端点之前,我添加了一个Variable变换器来删除" Content-Type"变量。这解决了问题!

因此,似乎Mule出于某种原因将#34; Content-Type" 变量,其中包含我在HTTP出站端点中指定的Content-Type值,从而生成" application / json,application / json;字符集= UTF-8"

我不得不在每个HTTPS出站端点之后放置它以继续删除变量: