2017-09-05 72 views
0

Iam在一个需要指定多个表单参数的项目上工作,其中一个是文件本身。如何在请求中发送多个表单参数?

我的尝试:

import requests 
REST_URL = 'http://192.168.150.138:8888/tasks/create/file' 
with open(os.path.join('/home/default/Batch/Samples/', filename),'rb') as sample: 
      files = {'file' :("temp_file_name" , sample)} 
      r = requests.post(REST_URL , files=files) 

问题

我需要通过这样的附加信息(这些都是形式参数)

file (required) - sample file (multipart encoded file content) 
package (optional) - analysis package to be used for the analysis 
timeout (optional) (int) - analysis timeout (in seconds) 
priority (optional) (int) - priority to assign to the task (1-3) 
options (optional) - options to pass to the analysis package 
machine (optional) - label of the analysis machine to use for the analysis 
platform (optional) - name of the platform to select the analysis machine from (e.g. “windows”) 

假设,如果我想以这种形式发送机器名称,我可以像这样创建吗?

data = {'machine' :'machine_name'} 
r =requests.post(EST_URL , files=files,data=data) 

任何建议将有所帮助。

+0

是,导入请求 –

+0

@ DAS-G型修正 –

回答

0

问题:假设如果我想发送机器名称的形式也可以创建像这样吗?


请求快速入门More complicated POST requests

如果你想测试requests参数,您可以运行以下命令:

import requests, io 
url = 'http://httpbin.org/anything' 

sample = io.StringIO('lorem ipsum') 
files = {'file': ("temp_file_name", sample)} 
data = {'machine': 'machine_name'} 
r = requests.post(url, data=data, files=files) 

r_dict = r.json() 
for key in r_dict: 
    print('{}:{}'.format(key, r_dict[key])) 

输出

json:None 
headers:{'Connection': 'close', 'Content-Length': '261', 'User-Agent': 'python-requests/2.11.1', 'Content-Type': 'multipart/form-data; boundary=5ed95afb5ea2437eade92a826b29be0d', 'Host': 'httpbin.org', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*'} 
data: 
args:{} 
files:{'file': 'lorem ipsum'} 
method:POST 
url:http://httpbin.org/anything 
form:{'machine': 'machine_name'} 

查看http://httpbin.org,还有很多其他的URL端点可以测试。

测试使用Python 3.4.2

相关问题