我基本上想要在通过ColdFusion调用SOAP Web服务时将ASP.NET_SessionId
cookie添加到我的HTTP请求标头中。在ColdFusion中为SOAP调用的HTTP标头添加cookie
Web服务在ColdFusion中的Application.cfc
组件的OnApplicationStart
函数中注册。
<cfscript>
objSoapHeader = XmlParse("<wsse:Security mustUnderstand=""true"" xmlns:wsse=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd""><wsse:UsernameToken><wsse:Username>MY_USERNAME</wsse:Username><wsse:Password>MY_PASSWORD</wsse:Password></wsse:UsernameToken></wsse:Security>");
Application.UserWebService = CreateObject("webservice","MY_URL/UserService.asmx?WSDL");
addSOAPRequestHeader(Application.UserWebService,"","",objSoapHeader,true);
</cfscript>
我的Web服务被称为例如:
<cfset Result = "#Application.UserWebService.SomeFunction("1", "DATA")#">
为了使.NET服务器(如Web服务的位置)记住我的会话状态,我必须通过ASP.NET_SessionId
的cookie中HTTP请求头,但不知道这是否甚至可以在ColdFusion中使用。
我已经研究了好几个小时,但是到目前为止还没有成功,所以有人成功设法解决这个问题?
这就是你如何在cfhttp中设置cookie。 ''。但我不知道从哪里获取.NET值。你有没有试过用''查看cgi范围? –
Jules
为了澄清,这里的建议是尝试使用'cfhttp'而不是'createObject()'来使用webservice。在某些情况下,它提供了更多的灵活性。请参阅此主题以了解有关如何提取Cookie并通过http请求维护会话的详细信息:http://www.bennadel.com/blog/725-maintaining-sessions-across-multiple-coldfusion-cfhttp-requests.htm – Leigh
@Leigh - 他正在寻找.NET会话ID,而不是CF。但我同意你的意见。 cookie.CFID或cookie.JSESSIONID可能更好用。 – Jules