2017-06-16 84 views
0

我做了执行HTTP POST具有它博德编码为JSON调用的API一个简单的脚本:当调用自定义API蟒蛇thows错误httplib.CannotSendHeader例外

#!/usr/bin/python 
# coding: utf-8 

import sys 
import httplib 
from base64 import b64encode 
from json import dumps 

filename = sys.argv[1] 
outfile = filename + ".txt" 
with open(filename, 'rb') as f: 
    content = f.read() 

data = b64encode(content) 

jsonData = { 
    'param_1': 12, 
    'param_2': 12, 
    'filename': "45.jpg", 
    'file_data': data 
} 

jsonData = dumps(jsonData) 

headers = { 
    "Content-Type": 'application/json', 
    "Accept": '*/*' 
} 

conn = httplib.HTTPConnection('localhost',8016) 
conn.putheader("Content-Type",'application/json') 
conn.sendheaders() 

conn.request('POST', '/files', jsonData, headers) 

response = conn.getresponse() 
print response 

但我得到以下错误:

Traceback (most recent call last): 
    File "./add_file.py", line 31, in <module> 
    conn.putheader("Content-Type",'application/json') 
    File "/usr/lib/python2.7/httplib.py", line 1026, in putheader 
    raise CannotSendHeader() 
httplib.CannotSendHeader 

而我不明白为什么。我试图做我能想到的任何事情,但我失败了。从您的代码

conn.putheader("Content-Type",'application/json') 

线:

回答

0

只需卸下。通过将标题对象传递给httplib.request方法就足够了。