Shell 实现的几个Http交互的方法
由于测试需求,需要测试一些http接口是否正常,作为后端开发可以用脚本语言来实现比如python,shell之类的,这里分享一下,用shell如何实现。
URLencode方法
既然是http接口,必定会用到urlencode来将参数放入URL中。url_encode(){ echo "$1" | tr -d '\n' | xxd -plain | sed 's/\(..\)/%\1/g' | tr -d '\n' return 0 }
URLdecode方法
url_decode(){ printf $(echo -n $t | sed 's/\\/\\\\/g;s/\(%\)\([0-9a-fA-F][0-9a-fA-F]\)/\\x\2/g') return 0 }
解析JSON数据,从JSON对象中获取某个属性
parse_json(){ json=`echo $1 | sed 's/\"//g'`; #remove quotation mark echo $json | sed 's/.*'$2':\([^,}]*\).*/\1/' return 0 }
解析URL参数,从URL中获取某个参数的值
parse_uri_paras(){ echo $1 | sed 's/.*'$2'=\([[:alnum:]]*\).*/\1/' return 0 }
获取重定向地址
request_redirect_url(){ echo `curl -i "$1" 2>/dev/null | sed -n 's/^Location://p'` return 0 }
发送简单的GET请求
http_get(){ get_data=`curl -X GET "$1" 2>/dev/null` if [ "$get_data" = "" ]; then #出错了 echo "出错了,试试:curl -X GET \"$1\"" exit 1 else echo $get_data return 0 fi }
发送简单的POST请求
http_post(){ post_data=`curl -X POST -d "$1" $2 2>/dev/null` if [ "$post_data" = "" ]; then #出错了 echo "出错了,试试:curl -X POST \"$1\" \"$2\"" exit 1 else echo $post_data return 0 fi }
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!