烧瓶路线变量祭坛urlencoded字符串

时间:2013-03-04 20:22:24

标签: python flask

我从我的Android应用程序传递以下网址

http://server.com/core/put/18.00283670425415/59.353229999542236/%5BB%40463336a0/

最后一个参数是URI编码的字符串。 在Flask中,我的路线看起来像

@server.route('/put/<long>/<lat>/<tagline>/')
def put(long, lat, tagline):
    return tagline 

我将[B@463336a0作为回报,我的网址更改为

http://server.com/core/put/18.00283670425415/59.353229999542236/[B%40463336a0/

这里发生了什么?这让我发疯了。

1 个答案:

答案 0 :(得分:1)

这里发生的事情被称为percent-encoding%5B[的百分比编码,%40@的百分比编码。

您需要确保您的Android应用发送转义 URI。在这种特殊情况下,它看起来像这样(为简洁起见,简化示例):

>>> import urllib
>>> unescaped_url = '%5BB%40463336a0'
>>> escaped_url = urllib.quote(unescaped_url)
'%255BB%2540463336a0'
>>> unescaped_url == urllib.unquote(escaped_url)
True