BOM not expected in CF but sent by IIS/SharePoint我正在尝试通过cfinvoke从ColdFusion使用SharePoint Web服务(因为我不想处理(读取:解析)SOAP响应本身)。 SOAP响应包含一个字节顺序标记字符(BOM),该字符在CF中产生以下异常:
用于UTF-8编码的标准可选地包括BOM字符(http://unicode.org/faq/utf_bom.html#29)。 Microsoft几乎普遍将BOM字符包含在UTF-8编码流中。据我所知,无法在IIS中进行更改。默认情况下,JRun(ColdFusion)使用的XML解析器不处理UTF-8编码的XML流的BOM字符。因此,似乎解决此问题的方法是更改??JRun使用的XML解析器(http://www.bpurcell.org/blog/index.cfm?mode=entry 正如亚当·塔特尔(Adam Tuttle)所说的那样,解决方法在您链接到的页面上
我要说的是您的问题的答案(可能吗?)不是。我不确定,但是在halL上方(在此页面的注释中)发表评论的海报提供了解决该问题的方法-因此,我认为手动解析时可以进行处理。 您说您正在使用CFInvoke,因为您不想自己处理肥皂响应。看来您别无选择。 听起来像ColdFusion在后台使用Apache Axis。 这并不完全适用于您的解决方案,但是在使用Apache Axis / Java使用.NET Web服务之前,我不得不处理一次此问题。我能够找到的唯一解决方案(由于Web服务的所有者不愿意在其末端更改任何内容)是编写一个Handler类,Axis将其插入管道中,如果存在的话,该类将从消息中删除BOM。 那么也许可以通过ColdFusion配置Axis?如果是这样,则可以将其他处理程序添加到消息处理流程。 |