Oracle service names and SIDs aren't the same thing. I wonder if the problem may be related to that? Your tnsnames entry describes the value as a service name, but in the oracle-style connection structure you say it is a SID. If you know the listener uses the same value for both SID and service name obviously it shouldn't matter, but if they differ, I suspect that is what you may be tripping over.
You should only need to use the simpler form, the URL-based on, in any case. For 10g I'm pretty sure you specify the service name in the URL, not the SID, if you find the listener values differ.