2015-02-05 3 views
0

Я пытаюсь реализовать веб-разъем Quickbooks (QBWC) в Railo 4.xНе удается проверить подлинность с помощью веб-соединителя Quickbooks/CFML

<cfcomponent output="false"> 

<cffunction name = "authenticate" access="remote" returntype="string"> 
    <cfargument name = "username" type="string" required="true"> 
    <cfargument name = "password" type = "string" required="true"> 

    <cfset var loc = {}> 

    <cfset loc.retVal= []> 

    <cfset loc.retVal[1] = "MYSESSIONTOKEN"> 
    <cfset loc.retVal[2] = "NONE"> 
    <cfset loc.retVal[3] = ""> 
    <cfset loc.retVal[4] = ""> 


    <cfreturn loc.retVal > 
</cffunction> 

<cffunction name = "clientVersion" access="remote" returnType ="string"> 
    <cfargument name = "productVersion" type="string" required="true"> 

    <cfset var loc = {}> 

    <cfset loc.retVal = ""> 

    <cfreturn loc.retVal> 
</cffunction> 



</cfcomponent> 

Это мой БОВ файл:

<?xml version="1.0"?> 
<QBWCXML> 
<AppName>QuickCellarSVC</AppName> 
<AppID></AppID> 
<AppURL>http://localhost:8080/QuickCellar.cfc</AppURL> 
<AppDescription>Quick Cellar railo component</AppDescription> 
<AppSupport>http://localhost:8080/support.cfm</AppSupport> 
<UserName>Joe</UserName> 
<OwnerID>{57F3B9B1-86F1-4fcc-B1EE-566DE1813D20}</OwnerID> 
<FileID>{90A44FB5-33D9-4815-AC85-BC87A7E7D1EB}</FileID> 
<QBType>QBFS</QBType> 
<Scheduler> 
<RunEveryNMinutes>2</RunEveryNMinutes> 
</Scheduler> 
</QBWCXML> 

QBWC след показывает проблему:

Object reference not set to an instance of an object. 
More info: 
StackTrace = at QBWebConnector.WebService.do_authenticate(String& ticket, String& companyFileName) 
Source = QBWebConnector 

я смог углубиться немного больше и обнаружить, что существует проблема литья в железнодорожном Может быть?

<?xml version="1.0" encoding="UTF-8"?> 
-<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">-<soap:Body>- 

Не можете бросить сложный тип объекта STRUCT в строку


Использование Встроенный In-Function "сериализации (Struct): String" для создания строки из Struct

Теперь я знаю, что некоторые вы думаете «просто сериализовать» структуру. Ну, в Railo нет такой функции (о которой я знаю).

Любые идеи приветствуются.

ответ

0

Первая проблема, которую я вижу, - это ваш метод «аутентификации», возвращающий тип строки, но вы возвращаете массив. Если вы пытаетесь вернуть строку, вы можете использовать return serializeJSON (loc.retVal), а не только retVal, которая вернет ее как форматированную строку JSON.