【问题标题】:Hello World for Intuit Anywhere Java find customers not workingHello World for Intuit Anywhere Java 发现客户不工作
【发布时间】:2014-07-03 08:08:19
【问题描述】:

在使用 OpenID 成功连接到 Intuit 后,单击 FindAllCustomers 链接(确保客户(只有 2 个客户)存在于我的 Intuit 的帐户中),它在 JSP 中使用以下代码集:

QBCustomerService customerService = null;
    try {
        // Create the customer service.
        customerService = QBServiceFactory.getService(context,
                QBCustomerService.class);
    } catch (QBInvalidContextException e) {
        System.out.println("(QBInvalidContextException thrown by getService: " + e.getMessage());
    }

     try {
        // Using the service, retrieve all customers and display their names.
        List<QBCustomer> customers = customerService
            .findAll(context, 1, 100);

    } catch (Exception e) {
         System.out.println("Exception thrown by findAll: " + e.getMessage());
     }

我收到以下错误:

SEVERE: Error: 500 
Exception thrown by findAll: com.intuit.ds.qb.IDSException: 
    at com.intuit.ds.qb.IDSRestClient.sendRequest(IDSRestClient.java:521)
    at com.intuit.ds.qb.IDSRestClient.post(IDSRestClient.java:164)
    at com.intuit.ds.qb.qbo.QBORequestCreator.doIDSPost(QBORequestCreator.java:28)
    at com.intuit.ds.qb.qbo.AbstractQBOBaseDataService.findAll(AbstractQBOBaseDataService.java:170)
    at com.intuit.ds.qb.qbo.QBOCustomerService.findAll(QBOCustomerService.java:127)
    at org.apache.jsp.findallcustomers_jsp._jspService(findallcustomers_jsp.java:131)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

如果我遗漏了什么或做错了什么,请告诉我。另外,如果您想了解有关我为设置此应用程序所做的任何配置的更多信息,请告诉我。

编辑

即使在编译 Manas Ref - https://github.com/IntuitDeveloperRelations/QuickbooksV3API-Java 建议的 V3 应用程序之后

在启动此应用时,我收到此错误:

SEVERE: StandardWrapper.Throwable
java.lang.NoClassDefFoundError: com/intuit/ipp/exception/FMSException
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getDeclaredConstructors(Unknown Source)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:229)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:962)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:935)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:864)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: com.intuit.ipp.exception.FMSException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    ... 40 more

Jul 07, 2014 1:20:19 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Allocate exception for servlet qbapiv3
java.lang.ClassNotFoundException: com.intuit.ipp.exception.FMSException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getDeclaredConstructors(Unknown Source)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:229)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:962)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:935)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
    at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)
    at javax.servlet.GenericServlet.init(GenericServlet.java:158)
    at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1284)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1197)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:864)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:134)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)

我已经仔细检查了 FMSException 类是否仍然存在于我从 here 下载并在类路径中提供的库中 .

编辑 我以某种方式设置了 QuickBooks 版本 2 用于连接目的,并利用版本 3 库在 QuickBooks 中执行 DML(创建/获取客户 - 工作正常)。但是,我无法理解为什么我无法将 QuickBooks 版本 3 设置为 Java 应用程序。

我使用 QuickBooks 的主要座右铭是,只要 QuickBooks 中有 DML,就让外部应用程序执行。我不知道 QuickBooks 是否有这样的功能:

  1. 为特定对象编写触发器,或者,
  2. 向客户端发送某种推送通知(发布者 - 订阅者模型) - 在这里,发布者将是 QuickBooks 帐户,订阅者将是我们注册的应用程序。 (任何 DML 发生时触发)。

请告诉我您对此的建议。

【问题讨论】:

  • 500 错误通常在令牌过期或公司订阅结束时出现。检查是否是这种情况。尝试重新生成 OAuth 令牌。

标签: java quickbooks intuit-partner-platform quickbooks-online intuit


【解决方案1】:

您正在使用 JAVA V2 示例应用。 V2 API 已弃用,您无法使用 V2 访问全球公司的数据。

请使用 V3 示例应用 参考 - https://github.com/IntuitDeveloperRelations/QuickbooksV3API-Java

此处提供设置说明 - https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/sample_code/spring_sample_app_for_quickbooksapi/0002_creating_the_app

Maven 命令 -

mvn install:install-file -DgroupId=com.intuit.code.devkit.v3 -DartifactId=ipp-v3-java-devkit -Dversion=2.3.1 -Dpackaging=jar -Dfile=<JarFilePath>\ipp-v3-java-devkit-2.3.1-jar-with-dependencies.jar

PN - 如果需要,请根据您拥有的 devkit 版本更改版本号。 最新的 devkit 在这里可用 - https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits

关于推送通知的 Qts 截至目前,此服务在生产中不可用。有几个现有的解决方案,你应该在谷歌上搜索一下。

Imp - 您不应使用已弃用的 V2 应用。

谢谢

【讨论】:

  • 感谢您回来。似乎在设置 Quickbooks V3 API 时,它没有编译 POM 并且无法满足依赖关系,即使在准备好 pom 之后,我也无法执行它。请在我的问题本身中查看我在启动 V3 API 时的更新。
  • 您是否安装了以下安装指南中提到的依赖项? developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/… 在 mvn 命令中,请使用最新的 devkit 版本号(即 2.3.1)。 ipp-java-qbapihelper jar 作为 devkit 存档的一部分提供。它应该工作。如果您仍然遇到任何问题,请告诉我们。谢谢
  • Manas,我也无法使用 mvn 命令安装依赖项。让我知道错误堆栈跟踪是否有助于您理解。在此处查看输出:pastebin.com/S5njS8Lm(QuickBooks Mvn 输出)
  • 在对 POM 进行了一些修改(这里:pastebin.com/H9aJdY9J)后,我得到了不同的错误,它似乎也下载了一些信息。我现在得到的错误是:pastebin.com/UdRWSZVH。请让我知道这件事。我在 POM 中也提到了 3 个依赖项不起作用(未编译)
  • 请查看我的编辑并让我知道是否有可能设置应用程序(作为后台应用程序)。意味着,用户将只与标准 QuickBooks 页面交互,并且在屏幕后面,我们的设置应用程序将监听该特定 QuickBooks 帐户发生的 DML 事件(如推送通知服务)。任何想法!
猜你喜欢
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 1970-01-01
  • 1970-01-01
  • 2017-10-11
  • 2013-12-06
  • 1970-01-01
相关资源
最近更新 更多