Your code produced an empty response body, you’d want to check for that or catch the exception raised. It is possible the server responded with a 204 No Content response, or a non-200-range status code was returned (404 Not Found, etc.). Check for this.
- There is no need to use
simplejsonlibrary, the same library is included with Python as the
- There is no need to decode a response from UTF8 to unicode, the
.loads()method can handle UTF8 encoded data natively.
pycurlhas a very archaic API. Unless you have a specific requirement for using it, there are better choices.
import requests response = requests.get(url) response.raise_for_status() # raises exception when not a 2xx response if response.status_code != 204: return response.json()
Of course, this won’t protect you from a URL that doesn’t comply with HTTP standards; when using arbirary URLs where this is a possibility, check if the server intended to give you JSON by checking the Content-Type header, and for good measure catch the exception:
if ( response.status_code != 204 and response.headers["content-type"].strip().startswith("application/json") ): try: return response.json() except ValueError: # decide how to handle a server that's misbehaving to this extent