WebRequest.Execute Giving Me Nulls

I have had great success in using @Radu_Gidei 's DynaWeb package for making API requests in Dynamo.

I am working on downloading large requests from BIM 360 including model property data, and these requests get to be quite large. If I copy and paste the web request within the 60 second token expiration window in a web browser, the results come up just fine. If I run it through the WebRequest.Execute node, the first request will work, but the next two will not, and I get this error. Do you know why this is?

A complete guess: you are rate limited at some point in the process. The “send” looks somewhat atypical on these if I recall (could you send as many data requests manually by standard web browsing, which is what this part of the system is built for?), and so a part of BIM360 may have capped you to prevent overloading the system - basically preventing a DDoS attack, intentionally or not.

A functional alternative would be to query the data via one Forge request, which goes into a queue, processes, and returns one reply.

Hi @JacobSmall , how would you recommend doing this in Dynamo? Can you create a loop with OOTB nodes to make sure that the requests are processed one at a time?

To get to the data you’re after, I would use Dynamo to build and make a Forge API call.

However I would not use OOTB nodes, which isn’t quite a fair statement as you aren’t using OOTB nodes at this point either. Perhaps a more reasonable question would be “How would I configure the tools presented to consistently access the data?”

The answer to that is I wouldn’t. An analogous question would be: “How would you open cans of paint using only a mallet, without making a mess?” In the revised question the paint is the data you’re after, and the sledgehammer is the BIM360 website. You’re making dinner in the kitchens (Forge), and I know from experience this is going to get VERY messy if I don’t use the can opener (Forge API calls)…

So switching back to the “how do I access the data” question, you’ll need to learn to build a forge API call including the authentication token, all in the new context of a Forge request. Sadly that is over my head at the moment, however you can learn more about the platform, check out the API docs, and see what it takes to get started here: https://forge.autodesk.com/.

2 Likes

Hi Jacob,

Thank you for your response.

I did some digging in the API and found a way to circumvent the pre-signed URL’s that BIM 360 was giving me by copying the structure from the other models’ URLs that weren’t pre-signed.

I am, however, still struggling to be able to make a loop for paginated results. Do you have a suggestion on where I could find more information on how to make a loop in Dynamo?

Pass a list of the values you want to work with into a node and the loop will self perform.

Thanks @JacobSmall !