The difference is that your example uses a URL as input and outputs a JSON blob. The URLs still need to be constructed somehow and the output needs to be parsed if you want to do anything useful with this service. To compare apples-to-apples:<p><pre><code>    &#62;&#62;&#62; import urllib, simplejson
    &#62;&#62;&#62; person_id = 1
    &#62;&#62;&#62; person = simplejson.loads(urllib.urlopen('http://my-fake-service.com/people/%d.json' % person_id).read())
</code></pre>
Now you have a data structure you can work with. But you've just traded a nice parameter-passing syntax for string building, and you're parsing JSON manually. Of course, you could wrap all of this with an API, and you probably should, but XML-RPC does a lot of this wrapping for you.