使用请求Python lib和dicts dict的post请求问题

时间:2012-09-28 03:42:01

标签: python json simplejson python-requests

我是Python的新手,我需要构建一个连接到我们的API服务的Python库,发送一些json数据,一切正常,但有一点,我需要发送一些dicts执行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告诉我缺少所需的'title'字段,但是当在函数中打印数据时一切似乎都很好,dict json编码是我在请求站点中看到的这种情况: http://docs.python-requests.org/en/latest/user/quickstart/#more-complicated-post-requests

我已经尝试了其他混合结果的方法它不应该按照它应该的方式工作,也问题不是API,因为我们在其他语言中有库并且它工作正常。

1 个答案:

答案 0 :(得分:0)

很难猜到,如果没有关于http客户端和服务器API的更多详细信息,会出现什么问题。我的第一次尝试调试就是抓住wireshark并检查,如果您生成的请求与其他客户的实现生成的请求相同,并回答以下问题:

  • 有些标题不同吗?
  • 内容长度和内容类型是否正确指定?
  • 验证是否成功,或者是否一般使用缺少标题的响应?