最近在服务器上测试接口调用是否成功,之前也调用了一些,但都是一个参数的,都没问题。昨个要调用一个两个参数的方法,但服务器却只能接收到一个参数,到“&”就直接把后面抛弃了。
开始是以为在接受请求处理的过程中,某个程序识别到“&”就直接抛弃了后面部分,就一直调试,一直到net/bufio包的readSlice()方法,到这里接受的就不包括&了。
后来想着在浏览器中试一试,没想到在浏览器中竟然是可以调用的。这么一来,应该就是curl命令的问题了,果然,在curl命令执行过程中,linux遇到“&”将其转成后台进程了,并没有识别出是连接参数用的。
要解决的办法也很简单,要么在url两端加上双引号,要么在“&”前加上转义字符“\”,这样就能顺利拿到后面的参数了。