We're using PB 2017 R3 and making SOAP-based web service calls via the httpclient.
From our client system, we call an internal API that we host that serves as a wrapper for a 3rd party API to process credit card payments.
Everything has been working fine until the past week - the vendor API has had problems, which has resulted in all kinds of issues throughout the chain.
Long story short - we have our httpclient timeout set to 15 seconds. If our intermediary web service takes greater than 15 seconds to respond, the httpclient appears to timeout correctly (our expected message pops, etc). However, in the IIS logs we are seeing up to 3 requests initiated from the client system -- spaced 15 seconds a part.
Since this is payment logic, we have no looping or retry logic in place -- everything either works 100% and we post a payment, or we stop everything and roll back to prevent double payments, etc.
Has anyone seen anything like this with the httpclient? I wouldn't imagine that it would retry the request a 2nd or 3rd time if the timeout value is reached - but that's exactly what it looks like. We're seeing the multiple requests both in the IIS logs and via WireShark, even though we're only calling SendRequest() once.
Thanks,
John
Just to add to Armeen's post ... your PB App sets the timeout, for example
HttpClient lnv_HttpClient
lnv_HttpClient = Create HttpClient
//Set timeout to 100 seconds
lnv_HttpClient.Timeout = 100
However, if you always want to impose a 100 second timeout application wide standard, the I would suggest creating an HTTPClient "Ancestor" and then set the timeout in there to 100 seconds. Then all descendant HTTPClient object classes will follow the 100 timeout setting by default. Food for thought. ;-)
Regards ... Chris
Also why PB has set default Timeout to 60 while DOTNET has 100 seconds?
Do I have to upgrade to new version to make it work properly?
I suspect that Appeon Engineering team just took an educated guess on the default timeout based on their initial testing. However once you create your own ancestor, you can set it to the same as .Net. That's the beauty of OO programming. :-)
Regards ... Chris