昨天,同事调用我用PHP写的API接口,死活不返回数据。
用浏览器和postman能返回数据,但是他调用这个接口就不行。我一度怀疑是他的问题。
起初,我是一脸懵逼的,因为我写的该项目的其它API接口,也曾经出现过不返回数据的情况,但是过一段时间又好了,这让我甚是不爽。
于是,以我过去的经验判断,可能是使用了PHP的“exit;”,导致服务器返回500错误,进而没有数据返回。
但是,我把exit修改成echo后,仍然没有解决问题。前前后后搞了一两个小时,还是没有解决。
最后实在不行,就去请教上司(他经验比较丰富,也得是经验丰富,帮我找到了原因)。
原来是因为我有的get参数中包括空格,这样就会出现一个问题:url地址错误,中文、空格等特殊字符都会造成这种情况。
可能是浏览器或者postman有自动处理空格的功能,但是我同事调用该接口时,肯定是没有处理的。
解决方法:
对GET或POST参数进行处理,调用urlencode()函数。
urlencode()编码:对字符串中除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位[十六进制数],空格则编码为加号(+)
urldecode()解码:还原 URL 编码字符串。
举例:
$param = "downloadTime desc";
$param = urlencode($param);
$url = "http://s.com/api.html?param=$param";
网友评论