以下函数连接到 API 并返回一个 json 对象。虽然它只适用于开发。在生产服务器中,它只返回 False。
任何想法为什么它不能在不同的服务器上工作?
def request_api(api_call, post_fields, authentication_data = None):
try:
log.debug("Connecting To API: " + settings.API_URL + api_call)
curl = pycurl.Curl()
curl.setopt(pycurl.URL, settings.API_URL + api_call)
except:
log.debug("Can't connect To API: " + settings.API_URL + api_call)
if post_fields:
try:
log.debug("Post Fields: " + post_fields)
curl.setopt(curl.POSTFIELDS, str(post_fields))
except:
log.debug("Error setting post fields.")
if authentication_data:
try:
log.debug("Authentication Fields: " + authentication_data)
curl.setopt(pycurl.USERPWD, authentication_data)
except:
log.debug("Error during authentication.")
try:
contents = StringIO.StringIO()
curl.setopt(pycurl.WRITEFUNCTION, contents.write)
curl.perform()
except:
log.debug("Error on curl.")
try:
responseCode = curl.getinfo(pycurl.HTTP_CODE);
log.debug("Response Code: " + str(responseCode))
except:
log.debug("Response Code: Error")
try:
log.debug("Response: " + contents.getvalue())
except:
log.debug("Response: Error")
try:
pyobj = json.loads(contents.getvalue())
log.debug("Response In Json Format: " + str(pyobj))
except:
log.debug("Response In Json Format: Error")
return pyobj
错误:
Exception Type: UnboundLocalError
Exception Value:
local variable 'pyobj' referenced before assignment
日志文件:
[18/Sep/2012 04:07:52] DEBUG [contests.views:29] Connecting To API: https://my-api/v1/token
[18/Sep/2012 04:07:52] DEBUG [contests.views:39] Authentication Fields: test@user.com:test@user.com
[18/Sep/2012 04:49:32] DEBUG [contests.views:51] Error on curl.
[18/Sep/2012 04:49:32] DEBUG [contests.views:54] Response Code: 0
[18/Sep/2012 04:49:32] DEBUG [contests.views:58] Response:
[18/Sep/2012 04:49:32] DEBUG [contests.views:65] Response In Json Format: Error