Reputation: 135
When debugging a program using the QuickBooks Online API V3 with the SDK. How do you troubleshoot a bad request coming from DataServices. I have gone through several layers of the Exception innerExceptions and I only see ValidationException.
But what tripped the validation exception???
Is there a log to see what caused the problem?
Upvotes: 1
Views: 2588
Reputation: 861
Simply collect the Error Message coming from Quickbook API. Make following the first catch block statement:
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 .
}
Upvotes: 0
Reputation: 609
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;
}
}
Upvotes: 3
Reputation: 616
I just found out this when looking deeply into the exception generated.
Generally speaking you will get an exception and you check if the inner exception object is not null or nothing, if it has an inner exception you look at it.
You will notice that every exception also has a property called "InnerExceptions" (plural) which is a list containing inner exceptions, this property will be null when you have a proper inner exception, but in the last one (in my case) when the inner exception property is null this list contains one inner exception with the details.
This property is available on Intuit.Ipp.Exception.IdsException and contain a list of IdsError
I'm using the IPP .Net SDK 3.0 API (version 2.0.2.0)
Upvotes: 1
Reputation: 5340
Please mention which SDK(JAVA/.NET/PHP) you are using.
https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits
You can set the logger to debug mode to capture the raw request and response XMLs. From the response XML, you'll get the details of failure(if any).
Otherwise, you can call these endpoints directly from APIExplorer.
https://developer.intuit.com/apiexplorer?apiname=V3QBO
Thanks
Upvotes: 0
Reputation: 2367
For .Net SDK please enable request/response logs. Th details for bad exception get saved in these files. https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/0150_ipp_.net_devkit_3.0/logging
Upvotes: 0