【问题标题】:Can I return a String along with Dict in python?我可以在 python 中返回一个字符串和字典吗?
【发布时间】:2020-05-07 22:38:15
【问题描述】:

以下是我的代码 sn-p。如何修改我的 getUrlAndHeader(),以便我的 requests.post 工作。现在,如果我使用 getUrlAndHeader() ,我会得到 404 响应。有人可以帮忙吗?

import requests
def getUrlAndHeader():
    return "https://someurl.com, headers={'key1': 'val1', 'key2': 'val2'}"

if __name__ == "__main__":
    #200#response = requests.post("https://someurl.com", headers={'key1': 'val1', 'key2': 'val2'}, json=[])
    #404#response = requests.post(getUrlAndHeader(), json=[])
    #print response

【问题讨论】:

  • 为什么不只返回一个包含DictDict 或一个包含StringDict 的数组?

标签: python


【解决方案1】:

您正在尝试返回单个字符串。你可以返回一个元组,比如

def getUrlAndHeader():
    return "https://someurl.com", {'headers': {'key1': 'val1', 'key2': 'val2'}}

但是您不能将返回值直接传递给post 的参数列表。 (没有任何东西可以作为位置参数和关键字参数的混合解包。)相反,做一些类似的事情

if __name__ == "__main__":
    url, other = getUrlAndHeader()
    response = requests.post(url, json=[], **other)

【讨论】:

    【解决方案2】:

    如果您正在寻找如何进行后期 API 调用,请参考此Python send POST with header

    对于你的问题,你也可以这样解决。

    import requests
    import json
    
    
    def get_url_and_headers():
        return {"url": "https://someurl.com", "headers": "{'key1': 'val1', 'key2': 'val2'}"}
    
    
    if __name__ == "__main__":
        res = get_url_and_headers()
        my_payload = {"a": 1, "b": 2}
        response = requests.post(res['url'], data=json.dumps(my_payload), headers=res['headers'])
        print(response.content)
    

    【讨论】:

      猜你喜欢
      • 2014-07-14
      • 1970-01-01
      • 2018-09-18
      • 2012-05-14
      • 2021-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-06
      相关资源
      最近更新 更多