通过Curl 对url进行encode操作

Posted westfly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过Curl 对url进行encode操作相关的知识,希望对你有一定的参考价值。

最近做项目的时候,通过 Gflags Reload 时候 发现对于某些value中包含=%中文等字符的支持不够好,value被截断了。

经过分析后,发现程序对url切分是用=&为标准的,如果value中带有这样的特殊字符,必然导致截断。

解决的方法也很简单,框架默认对value进行进行了urldecode的操作,所以在进行请求的时候,只需要对value进行urlencode就好。

有了思路后,就好解决了。因为希望依赖不多,就避免采用了python php perl之类的语言。在gist找到一个通过shell来操作的。

https://gist.github.com/cdown/1163649/8a35c36fdd24b373788a7057ed483a5bcd8cd43e

这个方案能够解决特殊字符的问题,但对中文的支持有问题。

于是用搜索到了,https://blog.longwin.com.tw/2017/12/bash-shell-curl-send-urlencode-args-2017/

 

这个是采用curl命令,考虑到我们reload也是curl来的,就copy来了,但文章的代码有点问题,于是改写如下

 

function urlencode() {
    local data
    if [[ $# != 1 ]]; then
        echo "Usage: $0 string-to-urlencode"
        return 1
    fi
    data="$(curl -s -o /dev/null -w %{url_effective} --get --data-urlencode "$1" "")"
    if [[ $? == 0 ]]; then
        echo "${data##/?}"
    fi
    return 0

 

https://gist.github.com/westfly/ed7e25ee4353751d94132f92837a7074

 

希望大家有用。

以上是关于通过Curl 对url进行encode操作的主要内容,如果未能解决你的问题,请参考以下文章

通过 PHP cURL 发送多维 JSON 数据

PHP 致命错误:调用未定义的函数 curl_init()

如何利用cURL和python对服务端和web端进行接口测试

为什么要对url进行encode

postman 自动生成 curl 代码片段

postman 自动生成 curl 代码片段