문제

cfinvoke를 통해 ColdFusion에서 SharePoint 웹 서비스를 사용하려고 합니다.구문 분석) SOAP 응답 자체).

SOAP 응답에는 CF에서 다음 예외를 생성하는 BOM(바이트 순서 표시 문자)이 포함됩니다.

"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는 거의 보편적으로 UTF-8로 인코딩된 스트림에 BOM 문자를 포함합니다.내가 알 수 있는 바에 따르면 IIS에서는 이를 변경할 수 있는 방법이 없습니다.JRun(ColdFusion)이 기본적으로 사용하는 XML 파서는 UTF-8로 인코딩된 XML 스트림의 BOM 문자를 처리하지 않습니다.따라서 이 문제를 해결하는 방법은 JRun에서 사용하는 XML 파서를 변경하는 것 같습니다(http://www.bpurcell.org/blog/index.cfm?mode=entry&entry=942).

Adobe는 BOM 문자를 처리하지 않는다고 말합니다(5월 2일과 5일에 anonynomous 및 haL의 의견 참조).
http://livedocs.adobe.com/coldfusion/8/htmldocs/Tags_g-h_09.html#comments

도움이 되었습니까?

해결책

귀하의 질문(가능한가요?)에 대한 대답은 '아니요'라고 말씀드리고 싶습니다.확실히는 모르겠지만 홀 바로 위에 댓글을 달았던 포스터(이 페이지 댓글에)는 문제에 대한 해결 방법을 제공하므로 수동으로 구문 분석할 때 처리가 가능하다고 가정합니다.

당신은 비누 응답을 직접 처리하고 싶지 않기 때문에 CFInvoke를 사용하고 있다고 말합니다.선택의 여지가없는 것 같습니다.

다른 팁

Adam Tuttle이 이미 말했듯이 해결 방법은 링크된 페이지에 있습니다.

<!--- 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>

ColdFusion이 내부적으로 Apache Axis를 사용하고 있는 것 같습니다.

이는 귀하의 솔루션에 정확하게 적용되지는 않지만 이전에 Apache Axis/Java와 함께 .NET 웹 서비스를 사용할 때 이 문제를 한 번 처리해야 했습니다.내가 찾을 수 있었던 유일한 해결책은(웹 서비스 소유자가 자신의 입장에서 아무것도 변경하려고 하지 않았기 때문에) 메시지에서 BOM이 존재하는 경우 메시지에서 삭제하는 파이프라인에 Axis가 연결할 핸들러 클래스를 작성하는 것이었습니다.

그렇다면 ColdFusion을 통해 Axis를 구성하는 것이 가능할까요?그렇다면 메시지 처리 흐름에 처리기를 추가할 수 있습니다..

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top