Is anyone aware of a (preferablly free) webservice that would accept a SOAP or REST request.

This request would contain an IP address, and the service would return an approximation of that IP's location.

EDIT: I need resolution down to the city of possible.