我是 Python 的新手,我需要构建一个 Python 库来连接到我们的 API 服务并发送一些 json 数据,一切正常,但有一件事,我需要发送一些执行 POST 请求的字典:
def create_project(self, project):
print project
params = simplejson.dumps(project)
print params
req = requests.post(self.url+'/projects/addSpeedy.json',
data=params,
auth=HTTPBasicAuth(self.api_id, self.api_key),verify=False)
data = simplejson.loads(req.text)
return data
我传递给该函数的项目参数包含以下结构:
script = {
'part001': 'HI',
'part002': 'WORLD'
}
project = {
'title': 'Project posted from Python Carrot',
'script': script,
'remarks': "I want the voice be similar to Bugs Bunny.",
'test': '1'
}
然而,当执行请求时,API 告诉我缺少所需的“标题”字段,但是当在函数中打印数据时,一切似乎都很好,dict json 编码是我在这种情况下的请求站点中看到的: http://docs.python-requests.org/en/latest/user/quickstart/#more-complicated-post-requests
我尝试了其他方法,但结果不一,它没有按应有的方式工作,问题也不是 API,因为我们有其他语言的库,而且它工作正常。
请您参考如下方法:
如果没有关于您的 http 客户端和服务器 API 的更多详细信息,很难猜测出了什么问题。我第一次尝试调试它是抓取 wireshark并检查您生成的请求是否与实现其他客户时生成的请求相同,并回答以下问题:
- 是否有些 header 不同?
- Content-Length 和 Content-Type 指定正确吗?
- 身份验证是否成功,或者缺少标题的响应是否使用得非常普遍?
