缺少Python请求的头错误,但定义了头

时间:2018-01-12 18:42:00

标签: python ansible python-requests

我正在尝试使用python请求库创建一个ansible模块,该模块运行时没有错误但返回响应

“{\ n \”code \“:\”generic_err_missing_required_header \“,\ n \”message \“:\”缺少标题:[X-chkp-sid] \“\ n}”

即使标题似乎已正确定义。

以下模块代码:

from ansible.module_utils.basic import AnsibleModule
import requests

def somefunction(sid):
    url = '<someurl>'

    headers = {
        'Content-Type': 'application/json',
        'X-chkp-sid': sid,
    }

    data = {
        'type': 'tag'
    }

    response = requests.post(url,headers,data,verify=False,timeout=10)

    return response.content

def main():

    module_args = dict(
        sid = dict(type='str', required=True)
    )

    result = dict(
        changed=False,
        original_message='',
        message=''
    )

    module = AnsibleModule(
    argument_spec=module_args,
    supports_check_mode=True
    )

    if module.check_mode:
        return result

    sid = module.params['sid']

    result=somefunction(sid)

    module.exit_json(somefunction_output=result)

if __name__ == '__main__':
    main()

我使用ansible uri模块和相同的header / body参数获得了成功的响应。还有其他想法吗?

2 个答案:

答案 0 :(得分:0)

None不会返回任何内容,因此返回值为return requests.post(url,headers,data,verify=False,timeout=10)

也许您想要{{1}}?

答案 1 :(得分:0)

requests.post()的大多数参数应该是关键字样式的args而不是普通的位置args。

请改为尝试:

response = requests.post(url,data=data,headers=headers,verify=False,timeout=10)