【问题标题】:quickbooks online sdk v3 how to troubleshot a badrequest/ValidationExceptionquickbooks online sdk v3 如何解决错误的请求/ValidationException
【发布时间】:2013-12-22 18:54:13
【问题描述】:

在使用带有 SDK 的 QuickBooks Online API V3 调试程序时。如何解决来自 DataServices 的错误请求。我已经经历了好几层异常innerExceptions,我只看到了ValidationException。

但是是什么触发了验证异常???

有日志看看是什么原因造成的问题?

【问题讨论】:

    标签: debugging sdk intuit-partner-platform quickbooks-online


    【解决方案1】:
                catch (Intuit.Ipp.Exception.IdsException ex)
                {
                    //TODO: handle dupe or other....
                    var returnMessage = string.Empty;
                    var innerException = ((Intuit.Ipp.Exception.ValidationException)(ex.InnerException)).InnerExceptions.FirstOrDefault();
                    if (innerException != null)
                    {
                        returnMessage = innerException.Message;
                    }
                } 
    

    【讨论】:

      【解决方案2】:

      我是在深入研究生成的异常时才发现的。

      一般来说,你会得到一个异常,然后检查内部异常对象是否不为空或什么都没有,如果它有内部异常,请查看它。

      您会注意到每个异常还有一个名为“InnerExceptions”(复数)的属性,它是一个包含内部异常的列表,当您有适当的内部异常时,此属性将为空,但在最后一个(在我的例子中)当内部异常属性为 null 时,此列表包含一个带有详细信息的内部异常

      此属性在 Intuit.Ipp.E​​xception.IdsException 上可用,并包含 IdsError 列表

      我正在使用 IPP .Net SDK 3.0 API(版本 2.0.2.0)

      【讨论】:

        【解决方案3】:

        对于 .Net SDK,请启用请求/响应日志。错误异常的详细信息保存在这些文件中。 https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/0150_ipp_.net_devkit_3.0/logging

        【讨论】:

        • 我正在使用 .Net,但在尝试找出为什么我在创建带有折扣的发票时收到错误请求时,日志记录并没有帮助。见下文。仍然不知道是什么导致了ValidationException。 Intuit.Ipp.E​​xception.IdsException: BadRequest ---> Intuit.Ipp.E​​xception.ValidationException: ValidationException 被抛出。
        【解决方案4】:

        请说明您使用的是哪个 SDK(JAVA/.NET/PHP)。

        https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits

        您可以将记录器设置为调试模式以捕获原始请求和响应 XML。从响应 XML 中,您将获得失败的详细信息(如果有)。

        否则,您可以直接从 APIExplorer 调用这些端点。

        https://developer.intuit.com/apiexplorer?apiname=V3QBO

        谢谢

        【讨论】:

          【解决方案5】:

          只需收集来自 Quickbook API 的错误消息。遵循第一个 catch 块语句:

          catch (Intuit.Ipp.Exception.IdsException ex)
          {
             string errorMessage = (((Intuit.Ipp.Exception.ValidationException)(ex.InnerException)).InnerExceptions.FirstOrDefault() ?? new Exception()).Message;
             // you can further log the error .
          }
          

          【讨论】:

            猜你喜欢
            • 2016-09-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-08-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多