繁体   English   中英

使用ColdFusion中的.net Web服务发布问题

[英]Issue using .net web service from ColdFusion

我一直在尝试使用ColdFusion中使用的Web服务遇到一些挑战。 服务(AccountsService)有一个方法GetAccountLinksByUser,它返回与给定用户关联的帐户。 此方法接受两个参数:

  • UPN,它只是识别用户的唯一字符串。 据我所知,这没问题。

  • sourceType的。 这最终是一个字符串,但在WSDL中定义为具有三个可能值之一的简单类型。 这是来自WSDL的XML的相关部分:

<xsd:simpleType name="SourceType">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="All"/>
        <xsd:enumeration value="Manual"/>
        <xsd:enumeration value="System"/>
    </xsd:restriction>
</xsd:simpleType>

问题是我似乎无法将字符串“All”,“Manual”或“System”传递到Web服务中。 CF生成的存根具有以下此方法的签名:

getAccountLinksByUser(java.lang.String, org.datacontract.schemas._2004._07.tfonline_services_accounts_datacontracts.SourceType)

这似乎表明我需要传入org.datacontract.schemas._2004._07.tfonline_services_accounts_datacontracts.SourceType的实例。 但是,我无法创建该类型的实例(很容易),因为它似乎不在CF搜索的类路径中。 我尝试将CF生成的类包装到/ stubs目录中,并将它们放入类路径中。 这确实有效,因为我现在可以创建一个org.datacontract.schemas._2004._07.tfonline_services_accounts_datacontracts.SourceType的实例,但我仍然无法将其传递给getAccountLinksByUser方法。

根据要求,这是我用来调用Web服务的代码:

<cfset accountsService = CreateObject("WebService", "http://local.hostname/libraries/com/foo/bar/staging/AccountsService.wsdl") />
<cfset SourceType = CreateObject("java", "org.datacontract.schemas._2004._07.tfonline_services_accounts_datacontracts.SourceType") />
<cfset accounts = accountsService.getAccountLinksByUser("username@domain", SourceType.All) />

更多信息。 Web服务的发布者不公开发布其WSDL。 这是通过电子邮件发送给我的,我正在从我的本地开发站点加载WSDL。

我得到的具体错误是:

无法执行Web服务调用getAccountLinksByUser。 调用Web服务操作时返回的错误是:

无法执行Web服务调用getAccountLinksByUser。 调用Web服务操作时返回的错误是:''java.lang.IllegalArgumentException:参数类型不匹配

我不确定在这一点上要去哪里。 有什么建议么?

该服务是用.NET编写的。

我运行了一些测试,这似乎与CF10中的Axis2切换有关。 我真的不知道1和2之间到底是什么约枚举的改变。然而,设置版本级别回轴1应该做的伎俩:

<cfscript>
     args = { refreshWSDL=true, wsversion=1 };
     ws = createObject("webservice", "http://mysite/test.asmx?wsdl", args);
     result = ws.getAccountLinksByUser("test@somewhere.com", "All");
     writeDump(result);
</cfscript>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM