关于Web服务:CF中不需要BOM,但由IIS / SharePoint发送

关于Web服务:CF中不需要BOM,但由IIS / SharePoint发送

BOM not expected in CF but sent by IIS/SharePoint

我正在尝试通过cfinvoke从ColdFusion使用SharePoint Web服务(因为我不想处理(读取:解析)SOAP响应本身)。

SOAP响应包含一个字节顺序标记字符(BOM),该字符在CF中产生以下异常:

1
2
3
4
5
6
"Cannot perform web service invocation GetList.
The fault returned when invoking the web service operation is:
'AxisFault
faultCode: {http://www.w3.org/2003/05/soap-envelope}Server.userException
faultSubcode:
faultString: org.xml.sax.SAXParseException: Content is not allowed in prolog."

用于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)所说的那样,解决方法在您链接到的页面上

1
2
3
4
<!--- Remove BOM from the start of the string, if it exists --->
<cfif Left(responseText, 1) EQ chr(65279)>
<cfset responseText = mid(xmlText, 2, len(responseText))>
</cfif>

我要说的是您的问题的答案(可能吗?)不是。我不确定,但是在halL上方(在此页面的注释中)发表评论的海报提供了解决该问题的方法-因此,我认为手动解析时可以进行处理。

您说您正在使用CFInvoke,因为您不想自己处理肥皂响应。看来您别无选择。


听起来像ColdFusion在后台使用Apache Axis。

这并不完全适用于您的解决方案,但是在使用Apache Axis / Java使用.NET Web服务之前,我不得不处理一次此问题。我能够找到的唯一解决方案(由于Web服务的所有者不愿意在其末端更改任何内容)是编写一个Handler类,Axis将其插入管道中,如果存在的话,该类将从消息中删除BOM。

那么也许可以通过ColdFusion配置Axis?如果是这样,则可以将其他处理程序添加到消息处理流程。


推荐阅读

    linux重新服务命令?

    linux重新服务命令?,服务,系统,网络,标准,工作,设备,命令,名称,信息,网络服

    linux服务器基本命令?

    linux服务器基本命令?,地址,系统,设备,网络,工作,标准,信息,电脑,命令,密码,l

    linux命令读取前十个?

    linux命令读取前十个?,时间,系统,最新,文件,名称,标准,密码,工作,适当,信息,l

    linux服务器下载命令?

    linux服务器下载命令?,服务,密码,系统,档案,工具,网络,公共,百度,地址,认证,l

    linux命令怎么停服务?

    linux命令怎么停服务?,服务,系统,状态,代码,跨行,软件,情况,第一,名称,命令,l

    linux中不能识别命令?

    linux中不能识别命令?,系统,服务,设备,数据,软件,工具,第一,在线,地方,电脑,m

    linux服务端退出命令?

    linux服务端退出命令?,档案,命令,环境,异常,标准,网络,模式,终端,编辑,文件,l

    linux中启动服务命令?

    linux中启动服务命令?,服务,系统,命令,信息,工作,设备,网络,标准,名称,密码,l

    linux读取码值命令?

    linux读取码值命令?,系统,工作,地址,证书,命令,工具,档案,文件,设计,信息,基

    linux服务器常用命令?

    linux服务器常用命令?,工作,系统,地址,信息,命令,目录,管理,标准,设备,功能,

    linux筛选服务命令?

    linux筛选服务命令?,服务,系统,状态,软件,环境,主体,技术,号码,发行,名称,查

    linux服务器保存命令?

    linux服务器保存命令?,时间,状态,档案,电脑,命令,信息,位置,编辑,文件,模式,L

    linux服务器扫盘命令?

    linux服务器扫盘命令?,地址,工作,命令,目录,数据,单位,名称,系统,管理,信息,L

    linux命令切换服务器?

    linux命令切换服务器?,地址,名称,系统,环境,实时,命令,服务器,脚本,路径,版

    linux服务器搭建命令?

    linux服务器搭建命令?,系统,服务,软件,地址,平台,在线,密码,工具,环境,百度,l

    服务器重启命令linux?

    服务器重启命令linux?,工作,标准,设备,服务,系统,名称,命令,百度,网络,密码,

    linux服务端常用命令?

    linux服务端常用命令?,工作,地址,系统,网络,基础,命令,标准,工具,信息,管理,l

    vb发送linux命令?

    vb发送linux命令?,软件,系统,平台,基础,标准,电脑,代码,时间,环境,脚本,如何

    linux文件发送到命令?

    linux文件发送到命令?,服务,软件,系统,数据,文件,命令,工作,第一,工具,服务

    linux禁用服务命令行?

    linux禁用服务命令行?,服务,系统,软件,管理,工具,信息,状态,平台,连续,技术,l