Function Coldfusion<;cfreturn>;,一无所获

Function Coldfusion<;cfreturn>;,一无所获,function,coldfusion,Function,Coldfusion,我有一个简单的函数,它调用一个webservice并返回一个令牌。 它已经运行了很长一段时间,但最近却一无所获 <cffunction name="getICEToken" access="public" output="no" returntype="string" returnformat="plain" description="Sets token for access to ICE webservices"> <cfargument name="usernam

我有一个简单的函数,它调用一个webservice并返回一个令牌。 它已经运行了很长一段时间,但最近却一无所获

<cffunction name="getICEToken" access="public" output="no" returntype="string" returnformat="plain" description="Sets token for access to ICE webservices">
    <cfargument name="username" type="string" required="yes" />
    <cfargument name="password" type="string" required="yes" />
    <cfargument name="memberID" type="string" required="yes" />
    <cfargument name="partnerID" type="string" required="no" default="#this.partnerID#">

    <!--- initialize local var to hold method-specific vars --->
    <cfset var local=structnew()>
    <cftry>
    <cfscript>
                    local.postTo='/membership/Member.asmx';
                    local.soapAction = 'someURL';
                    local.method = 'AuthenticateUserByMemberId2';
                    local.myAccessToken = '';
            </cfscript>
            <!--- generate soap request content to get our access token --->
    <cfsavecontent variable="soapBody">
    <cfoutput>
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <#local.method# xmlns="#local.soapAction#">
          <WsUserName>#xmlformat(arguments.username)#</WsUserName>
          <WsPassword>#xmlformat(arguments.password)#</WsPassword>
          <PartnerId>#xmlformat(arguments.partnerID)#</PartnerId>
          <MemberId>#xmlformat(arguments.memberID)#</MemberId>
        </#local.method#>
      </soap:Body>
    </soap:Envelope>
    </cfoutput>
    </cfsavecontent>


            <!--- send webservice request to ICE --->
            <cfhttp url="https://#this.host##local.postTo#" method="post" result="local.httpResponse">
        <cfhttpparam type="header" name="SOAPAction" value="#local.soapAction##local.method#" />
        <cfhttpparam type="header" name="accept-encoding" value="deflate;q=0">
        <cfhttpparam type="header" name="te" value="deflate;q=0">
        <!--- pass in the xml-formatted request --->
        <cfhttpparam type="xml" value="#trim(soapBody)#" />
    </cfhttp>


    <!--- if the status code is 200, we have a successful response --->
    <cfscript>
            if(find( "200", local.httpResponse.statusCode )) {
            // Parse the XML --->
            local.soapResponse = xmlParse( local.httpResponse.fileContent );
            // Pull the specific nodes we need from the XML --->
            local.responseNodes = xmlSearch(local.soapResponse, "//*[ local-name() = '#local.method#Result' ]");
                            // set to struct
                            local.strResult=ConvertXMLToStruct(local.responseNodes[1]);
                            // writeoutput('converted token response to structure<BR>');
            // dump the response data --->
                            if(local.strResult.success) {
                                    local.myAccessToken = local.strResult.UserAccountToken;
                                    // writeoutput('access token acquired: #local.myAccessToken#<BR>');
                            } else {
                                    // writeoutput('access token NOT acquired<BR>');
                                    // stopanddump(arguments,0);
                                    // stopanddump(local.strResult);
                            }
                            // set token to THIS scope
            this.ICEtoken=local.myAccessToken;

                    }
            </cfscript>

<!---
If I uncomment this:

<cfdump var="#local.myAccessToken">
<cfabort>

the dump shows the 172 character token

But, when trying to return this value, the calling function shows [empty string]

--->


            <!--- return token --->
            <cfreturn local.myAccessToken>


    <cfcatch type="any"><cfdump var="#cfcatch#"><cfabort></cfcatch>
    </cftry>
    </cffunction>

local.postTo='/membership/Member.asmx';
local.soapAction='someURL';
local.method='AuthenticateUserByMemberId2';
local.myAccessToken='';
#xmlformat(arguments.username)#
#xmlformat(arguments.password)#
#xmlformat(arguments.partnerID)#
#xmlformat(arguments.memberID)#
如果(查找(“200”,local.httpResponse.statusCode)){
//解析XML--->
local.soapResponse=xmlParse(local.httpResponse.fileContent);
//从XML中提取我们需要的特定节点--->
local.responseNodes=xmlSearch(local.soapResponse,“/*[local-name()=”#local.method#Result']);
//设置为struct
local.strResult=ConvertXMLToStruct(local.responseNodes[1]);
//writeoutput('converted token response to structure
'); //转储响应数据---> if(local.strResult.success){ local.myAccessToken=local.strResult.UserAccountToken; //writeoutput('获取的访问令牌:#local.myAccessToken#
); }否则{ //writeoutput(“未获取访问令牌
”; //stopanddump(参数,0); //stopanddump(本地strResult); } //将令牌设置为此范围 this.ICEtoken=local.myAccessToken; }
如果我硬编码一个值,例如

<cfreturn 'some 172 character string'> 

这将成功返回值

有什么想法吗


谢谢

您的
cfreturn
无效

<cfreturn myToken = webservice.struct.token>

您的
cf返回值
无效

<cfreturn myToken = webservice.struct.token>

我想出来了。这不是我的密码。它是API回调空值。我首先输出的令牌是一个用于初始化CFC的虚拟帐户。我没有输出正确的api调用。

我找到了答案。这不是我的密码。它是API回调空值。我首先输出的令牌是一个用于初始化CFC的虚拟帐户。我没有输出正确的api调用。

您能发布一个代码示例吗?您的实际代码在cfreturn标记中是否有等号?有什么迹象表明您的函数没有返回任何内容?您有“如果状态代码为200,则生成并返回令牌”,但没有其他块。尝试编写一个返回状态代码的函数。您可以发布一个代码示例吗?您的实际代码在cfreturn标记中是否有等号?表示您的函数没有返回任何内容的指示是什么?您有“如果状态代码为200,则生成并返回令牌”,但没有其他块。试着写一个返回状态码的。是的,那是我的一个错误。我没有剪切和粘贴我的代码。我刚打进去。我会修好的。但是,是的,我在我的代码中没有这样做。复制和粘贴您的实际代码将帮助我们注意到任何错误。编写不会重新创建问题的伪代码不会帮助我们调试。是的,那是我的一个错误。我没有剪切和粘贴我的代码。我刚打进去。我会修好的。但是,是的,我在我的代码中没有这样做。复制和粘贴您的实际代码将帮助我们注意到任何错误。编写不会重新创建问题的伪代码不会帮助我们进行调试。