2008-09-11 3 views
2

私は、ColdFusionからcfinvokeを介してSharePoint Webサービスを使用しようとしています(なぜなら、SOAP応答自体を処理(読み込み:解析)したくないからです)。BOMがCFではなくIIS/SharePointによって送信される

"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)を含む:

SOAPレスポンスはCFで次の例外を生成するバイト順マーク文字(BOM)を含みます。マイクロソフトでは、BOM文字にUTF-8でエンコードされたストリームがほぼ普遍的に含まれています。私が知る限り、IISでそれを変更する方法はありません。 JRun(ColdFusion)がデフォルトで使用するXMLパーサーは、UTF-8でエンコードされたXMLストリームのBOM文字を処理しません。したがって、これを修正する方法は、JRun(http://www.bpurcell.org/blog/index.cfm?mode=entry&entry=942)が使用するXMLパーサーを変更することです。

Adob​​eは、BOM文字を処理していないと言っています(5月2日と5日のアノニマスとhalLのコメントを参照)。
http://livedocs.adobe.com/coldfusion/8/htmldocs/Tags_g-h_09.html#comments

+0

にリンクされたページです。 – djangofan

答えて

2

私は、あなたの質問に対する答えが可能であると言います。私はそれを明確には知らないが、halL(in the comments on this page)のすぐ上のコメントを投稿したポスターが問題の回避策を示したので、手動で解析するときに対処することは可能であると仮定します。

自分で石鹸の応答に対処したくないので、CFInvokeを使用していると言います。あなたには何の選択もないようです。

0

ColdFusionがApache Axisを使用しているようです。

これはソリューションには厳密には当てはまりませんが、Apache Axis/Javaで.NET Webサービスを使用する前にこの問題を一度処理しなければなりませんでした。私が見つけることができた唯一の解決策(Webサービスの所有者は自分の目的のために何かを変更したくなかったため)はAxisがパイプラインにプラグインするHandlerクラスを記述することでした。

おそらくAxisをColdFusionで設定することは可能でしょうか?もしそうならyou can add additional Handlers to the message handling flow

2

アダム・タトルは、すでに述べたように、この問題を回避するには、私は、WebSphere 6.1 Webサービスとまったく同じ問題を抱えているあなたは

<!--- 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> 
関連する問題