I am having an issue that I was able to resolve but felt like it was a bit of a hack. I use the API to search for a contact by email addresses and the result returned if found is an XML representation of the contact. In the xml is there is a tag called <id> containg the URL to get the contacts details (as outlined here: http://developer.constantcontact.com/doc/contactCollection). However if you make a GET request on this returned URL, it fails.
I have discovered this is due to the ID tag being an insecure (http://) url whereas the API requires that a secure (https://) request be made. So I am having to find and replace on the string before inserting it into my DB so that the next process that make the request will have the correct URL.
<id> tags are not supposed to be used as a URI according to the Atom spec. We happen to use a URI format as ID for each of the objects you are trying to get, but the value of<id> could be in any format. It's literally an ID, not a URL that you can use to access the object.
The correct way is to use href attribute of <link> tag and form your own URI by prefixing it with protocol (https://) and the host name (api.constantcontact.com).
To prevent confusion like this going forward, we will be using different format for <id> tags with new APIs in areas we have not covered yet.