Web services ColdFusion 2016中的Web服务不再起作用
我正在从ColdFusion 9升级到ColdFusion 2016,我的web服务突然停止工作。我相信这是因为轴2是在Cold Fusion 10中引入的,它使我现有的web服务无法运行 即使我在ColdFusion Administrator中将Web服务版本设置回1,它仍然不起作用 我调用这些web服务的方式是使用Web services ColdFusion 2016中的Web服务不再起作用,web-services,coldfusion,wsdl,axis2,axis,Web Services,Coldfusion,Wsdl,Axis2,Axis,我正在从ColdFusion 9升级到ColdFusion 2016,我的web服务突然停止工作。我相信这是因为轴2是在Cold Fusion 10中引入的,它使我现有的web服务无法运行 即使我在ColdFusion Administrator中将Web服务版本设置回1,它仍然不起作用 我调用这些web服务的方式是使用createObject函数: <cfscript> objSoapHeader = XmlParse("<wsse:Security mustUnd
createObject
函数:
<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>USERNAME</wsse:Username><wsse:Password>PASSWORD</wsse:Password></wsse:UsernameToken></wsse:Security>");
Application.UserWebService = CreateObject("webservice", PATH & "Requests/UserService.asmx?WSDL");
addSOAPRequestHeader(Application.UserWebService,"","",objSoapHeader,true);
// Get the .Net resources
Application.NetResources = Application.UserWebService.GetNetResources();
</cfscript>
但是,当查看消息列表时,我可以看到与GetNetResources关联的三条消息:
<wsdl:message name="GetNetResourcesSoapIn">
<wsdl:part name="parameters" element=tns:GetNetResources"/>
</wsdl:message>
<wsdl:message name="GetNetResourcesSoapOut">
<wsdl:part name="parameters" element=tns:GetNetResourcesResponse"/>
</wsdl:message>
<wsdl:message name="GetNetResourcesLanguageHeader">
<wsdl:part name="parameters" element=tns:LanguageHeader"/>
</wsdl:message>
然而,这仍然不能回答我的第二个问题
编辑2
在对代码进行了一些修改之后,我设法通过向web服务调用添加一个变量来解决RuntimeException
args = {TEST="<locale>en-CA</locale>"};
Application.NetResources = Application.UserWebService.GetNetResources(argumentCollection=args);
据我所知,我假设发送一个complexType
对象作为参数,该参数包含一个Locale
字符串
如果是这种情况,我将从CFML发送什么类型的对象?何时,发送一个结构作为参数
// Create struct
stLanguageHeader = structNew();
stLanguageHeader.locale = "en-CA";
Application.NetResources = Application.UserWebService.GetNetResources(stLanguageHeader);
这不是对你问题的回答,但你是否做了refreshWSDL=true
来验证它不是像缓存那样愚蠢的事情?:)当我尝试使用cfinvoke
时,它仍然不起作用。只是验证WS对象是否真的是使用版本1(在适当的范围内)重新创建的。我现在无法访问2016年,但总是有可能发生一些变化。很抱歉,我无法提供更多帮助。我相信更改是从ColdFusion 9更改为10,因为它是引入的。如果您有时间,可以通过使用CF10运行代码来确认。只是看看它是否会抛出相同的错误。
args = {TEST="<locale>en-CA</locale>"};
Application.NetResources = Application.UserWebService.GetNetResources(argumentCollection=args);
<wsdl:types>
<s:schema targetNamespace="http://tempuri.org/" elementFormDefault="qualified">
<s:element name="LanguageHeader" type="tns:LanguageHeader"/>
<s:complexType name="LanguageHeader">
<s:sequence>
<s:element name="Locale" type="s:string" maxOccurs="1" minOccurs="0"/>
</s:sequence>
<s:anyAttribute/>
</s:complexType>
</s:schema>
</wsdl:types>
// Create struct
stLanguageHeader = structNew();
stLanguageHeader.locale = "en-CA";
Application.NetResources = Application.UserWebService.GetNetResources(stLanguageHeader);