Troubleshooting API Connection Issues
You know what it is like when that new phone doesn’t get a dial tone, or your router isn’t getting an internet signal. In much the same way, connectivity issues are an annoying but common part of implementing web services in your applications software. Whether it is navigating your system’s firewalls, moving from development to production environments, or simply dealing with calling out to an API, few things are as frustrating as troubleshooting a piece of code that should be working but isn’t.
We are here to help. The Applications Engineering team here at Service Objects understands the full range of connection issues, and after 15-plus years in business we’ve seen it all. Between the sample code we’ve written and the support we provide our customers, chances are that we can help you get your application up and running as quickly as possible with the Service Objects’ API of your choice. But first let’s look at some of the most common issues we’ve seen, and how you can troubleshoot them.
Tools like Wireshark and Fiddler can be invaluable when debugging a connection to a web service. These tools allow you to see all the different network connections that your system is making, and can also allow you to view the information that is being sent to the service. This can be helpful for cases where you want to see what exactly is being sent to our services. Often these tools can highlight malformed requests, blocks by your firewall or any other odd behavior that is getting in the way of receiving valuable data from one of our APIs.
Firewalls, IP Addresses and Connection Issues
Another issue we see quite frequently is a connection issue when moving a website or application from development to production. If this happens, and you experience issues connecting to our services, a couple of quick checks can get you pointed in the right direction to debug your application.
First, check if your firewall needs to have IP addresses whitelisted. If it does, reach out to us at firstname.lastname@example.org and we will be happy to provide the most up-to-date set of IP addresses that our services utilize. Still having a tough time connecting to our services? Check through a command prompt on the server in question to ensure you can ping our primary (ws.serviceobjects.com) and backup (wsbackup.serviceobjects.com) endpoints. After that, you can perform a trace route to our endpoints to determine if there is any packet loss between your system and ours.
Failover and Service Downtime
A frequent question that we receive about connectivity to our services is what to do if the Service Objects’ API is unreachable.
First, understand that this should normally be an extremely rare event. Our SLA guarantees “five 9” availability, meaning that our services will be available 99.999% of the time. The equates to less than 5 minutes service downtime per year or around 26 seconds of downtime per month. We have several data centers around the country to help provide redundancy to ensure that your data keeps on getting validated in the event that our primary servers are down.
In addition to this, we recommend that you implement a failover call to our web services. What this means is that if our primary endpoint at ws.serviceobjects.com is down or working unexpectedly, your application should call our backup endpoint at wsbackup.serviceobjects.com. Below is an example of what failover configuration would look like while calling our AV3 service and using C# syntax.
string primaryurl = "https://ws.serviceobjects.com/av3/api.svc/GetBestMatches?BusinessName=" + businessName+ "&Address=" + address+ "&Address2=" + address2 + "&City=" + city + "&State=" + state + "&PostalCode=" + postalCode + "&LicenseKey=" + licenseKey;
string backupurl = "https://wsbackup.serviceobjects.com/av3/api.svc/GetBestMatches?BusinessName=" + businessName+ "&Address=" + address+ "&Address2=" + address2 + "&City=" + city + "&State=" + state + "&PostalCode=" + postalCode + "&LicenseKey=" + licenseKey;
BestMatchesResponse wsresponse = httpsGet(primaryurl);
if(wsresponse == null || (wsresponse.Error != null && wsresponse.Error.TypeCode == "3"))
throw new Exception();
Contacting Service Objects Tech Support
Finally, whether you are just beginning to troubleshoot or are at the end of your rope, don’t hesitate to reach out to us! We can assist you in tracking down issues you are encountering. It always helps if you can provide any relevant information about the problem you are encountering, such as the error message received, inputs that are causing the error, or time that the issue started. This information will help us isolate whether your problem is an issue with our services or an issue on your end.
Whatever your connectivity issues are, Service Objects support is here to help you. We are always happy to speak with you by phone, do a live screen sharing session with you, share tips or troubleshooting steps by email, or help in any way we can. Don’t hesitate to reach out to us anytime, and best of success with your connections!