Skip to main content
 首页 » 编程设计

python之使用 requests Python lib 和 dicts 的 post 请求问题

2025年05月04日9thcjp

我是 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 指定正确吗?
  • 身份验证是否成功,或者缺少标题的响应是否使用得非常普遍?