使用Python将文件和数据发布到API

时间:2013-11-11 09:28:43

标签: python post python-2.7 python-requests face-recognition

我正在尝试使用可以检测图像中的脸部的API。我正在使用Python,并希望能够上传指定参数的图像(在控制台中)。例如:

python detect.py jack.jpg

这是为了将文件 jack.jpg 发送到API。然后打印 JSON 响应。以下是用于识别面部的API文档。

http://rekognition.com/developer/docs#facerekognize

下面是我的代码,我正在使用Python 2.7.4

#!/usr/bin/python

# Imports
import sys
import requests
import json
# Facedetection.py sends us an argument with a filename
filename = (sys.argv[1])
# API-Keys
rekognition_key = ""
rekognition_secret = ""
array = {'api_key': rekognition_key,
                'api_secret': rekognition_secret,
                'jobs': 'face_search',
                'name_space': 'multify',
                'user_id': 'demo',
                'uploaded_file': open(filename)
                }  

endpoint = 'http://rekognition.com/func/api/'
response = requests.post(endpoint, params= array)

data = json.loads(response.content)
print data

我可以看到一切看起来都很好,但我的控制台得到了这个输出:

Traceback (most recent call last):
  File "upload.py", line 23, in <module>
    data = json.loads(response.content)
  File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 365, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 383, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

有什么问题?

1 个答案:

答案 0 :(得分:2)

成功!

这个问题没有包含好的代码。我用过这里的代码: uploading a file to imgur via python

#!/usr/bin/python

# Imports
import base64
import sys
import requests
import json
from base64 import b64encode
# Facedetection.py sends us an argument with a filename
filename = (sys.argv[1])
# API-Keys
rekognition_key = ""
rekognition_secret = ""
url = "http://rekognition.com/func/api/"

j1 = requests.post(
    url, 
    data = {
        'api_key': rekognition_key,
        'api_secret': rekognition_secret,
        'jobs': 'face_recognize',
        'name_space': 'multify',
        'user_id': 'demo',
        'base64': b64encode(open(filename, 'rb').read()),
    }
)

data = json.loads(j1.text)
print data

现在这个:python detect.py jack.jpg返回想要的JSON。全力以赴。