通过Curl对url进⾏encode操作
最近做项⽬的时候,通过 Gflags Reload 时候发现对于某些value中包含=%中⽂等字符的⽀持不够好,value被截断了。
经过分析后,发现程序对url切分是⽤=&为标准的,如果value中带有这样的特殊字符,必然导致截断。
解决的⽅法也很简单,框架默认对value进⾏进⾏了urldecode的操作,所以在进⾏请求的时候,只需要对value进⾏urlencode就好。有了思路后,就好解决了。因为希望依赖不多,就避免采⽤了python php perl之类的语⾔。在gist到⼀个通过shell来操作的。
这个⽅案能够解决特殊字符的问题,但对中⽂的⽀持有问题。
这个是采⽤curl命令,考虑到我们reload也是curl来的,就copy来了,但⽂章的代码有点问题,于是改写如下
function urlencode() {
local data
if [[ $# != 1 ]]; then
echo"Usage: $0 string-to-urlencode"
return 1
ficurl是什么命令
data="$(curl -s -o /dev/null -w %{url_effective} --get --data-urlencode "$1""")"
if [[ $? == 0 ]]; then
echo"${data##/?}"
fi
return 0
希望⼤家有⽤。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论