Did you get anywhere with this? I'm having the same issue.
You are not correctly signing the messages to admin APIs. Look at QueryTool.jar (and the source) for an example of how to do this.
Perhaps I was not clear in my post. I'm have communication going in both directions so I have no issue with signing. I need to know if there is a way to get the licenses sold per distributor (not from the query tool the available books - resources - to sell).
I need a way to work out who sold what or at least cross reference things.
Have you checked that the distribitor id you are putting into the distributor element is correctly formed (for a UUID) and that it exists?
This is the other potential cause for that error.
I'm not getting the exact same error. I need to get licenses, or perhaps I should say fulfillments, by distributor. Need a retrospective report on fulfillments by distributor. I don't seem to be able to find a web service to do it. The forum post in question seemed to suggest there was one but that he was getting an error. I've been through the documentation many times. It suggests a FulfillmentItemData but I've had no luck with a web service around that name (ManageFulfillmentItem etc). I'm now on the direct sql query route unless you have any suggestions?
afaik you can't get licenses by distributor. Fetch the fulfillments via admin/ManageFulfillment, filtered by distributor and then fetch the license, filtered by userId and resourceId (these data you got from ManageFulfillment).
Hope this helps!
Adobe wasn't able to help me with this issue (obviously nobody understod my problem...). You know what I'm speaking of, don't you?!
If you need to do a join between two objects (licenses, distributors, etc) you are better off making direct SQL calls, since the API set doesn't address that. For instance the following SQL statement wil generate a report with Distributor, Transaction Id, time, Title, Author, Publisher for all the fulfillments in the fulfillment table for the given date range
SELECT distributor.name fulfillment.transid, fulfillment.transtime, resourceitem.title,
resourceitem.creator, resourceitem.publisher FROM fulfillment
INNER JOIN fulfillmentitem ON (fulfillment.fulfillmentid = fulfillmentitem.fulfillmentid)
INNER JOIN resourceitem ON (resourceitem.resourceid = fulfillmentitem.resourceid)
INNER JOIN distributor ON (distributor.distid = fulfillment.distid )
ORDER BY distributor.name
WHERE <Put date range here using fulfillment.transtime for comparison>;
Each error message is descriptive, and has it's own cause, so it's hard to say what's going on without knowing the error message.
However most likely for what you want to do, the direct SQL queries might be easier (see my earlier post for examples).
Thanks for your help. I had already headed down the sql route as a fall back plan. The good thing that sql gives me is an easy access point to limit by date. Its a shame to use web services for some bits and sql for the other but never mind.
Thanks for your time. Much appreciated.