如何使用urllib2替换数据中的变量以发出POST请求

2024-04-25 04:23:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将用户的winusername和winpassword作为参数,然后在POST请求正文中使用它。但不幸的是,它不能替代变量

如果我在POST请求的“数据”部分对winusername和winpassword的值进行硬编码,那么效果绝对不错

#!/usr/bin/python

import urllib2
import base64
import json


# Collect all the inputs from the user
username = str(sys.argv[1])
password = str(sys.argv[2])
winusername = str(sys.argv[3])
winpassword = str(sys.argv[4])


data = '{\n    "extra_vars": {\n        "win_user": "% winusername",\n        "win_pass": "% winpassword"\n    }\n}'

request = urllib2.Request("https://awx-myorganization.net/api/v2/job_templates/212/launch/")
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)
request.add_header('Content-Type', 'application/json')
CreateResponse = urllib2.urlopen(request,data)

data1 = json.load(CreateResponse)

预期结果:winusername和winpassword应作为参数从用户处获取,并传递到POST请求的“数据”部分

注意:我使用的是Python 2.6版


Tags: the数据用户importjson参数requestsys