Aly*_*Aly 8 python flask asp.net-web-api
我正在尝试使用烧瓶服务器来获取api,它通过http get参数获取图像URL.
我正在使用这个url示例,它非常长(在pastebin上)并且+在url中包含许多内容.我在烧瓶服务器中设置了以下路线
@webapp.route('/example', methods=['GET'])
def process_example():
imageurl = flask.request.args.get('imageurl', '')
url = StringIO.StringIO(urllib.urlopen(imageurl).read())
...
Run Code Online (Sandbox Code Playgroud)
但我得到的问题是
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/aly/anaconda/lib/python2.7/urllib.py", line 87, in urlopen
return opener.open(url)
File "/Users/aly/anaconda/lib/python2.7/urllib.py", line 208, in open
return getattr(self, name)(url)
File "/Users/aly/anaconda/lib/python2.7/urllib.py", line 597, in open_data
data = base64.decodestring(data)
File "/Users/aly/anaconda/lib/python2.7/base64.py", line 321, in decodestring
return binascii.a2b_base64(s)
binascii.Error: Incorrect padding
Run Code Online (Sandbox Code Playgroud)
在进一步检查(即打印烧瓶获得的图像)时,似乎+字符被字面空间替换,这似乎是搞砸了.
是否有flask.args.get可以处理此功能的功能选项?
您需要正确编码查询参数; 在URL查询参数编码中,空格被编码为+,而+其自身被编码为%2B.
不能告诉Flask以不同方式处理特定数据; 您无法可靠地检测哪些数据已正确编码,哪些数据未正确编码.但是,您可以手动从查询字符串中提取参数request.query_string.
该更好的做法是正确的逃生参数(在JavaScript中,使用encodeURIComponent()等).该+字符不是Base64编码值中唯一有问题的字符; 格式也使用/和=,它们都带有URL的含义.
实际上,可能=是该data:URL 末尾的字符缺失,这是错误填充错误消息的更直接原因.如果你把它添加回来,你接下来确实会遇到所有+被解码的字符的问题' '.