http_build_query 这个方法会把值为NULL的给干掉
昨天遇到了调用接口签名算法总报错的问题.但把参数拿到本地打接口又是正确的.
然后就排除了签名方式计算是正确的.只有一个不同的是,正式环境用的是curl 本地用的snoopy.排查了差不多2个小时.最终确定是传参中http_build_query 处理后参数丢了.为null的值都没了.然后查手册也没有提及到怎么保留值为null的参数.没办法,只有重新写拼参了.
reset($data); while(list($key,$val) = each($data)) { if (is_array($val) || is_object($val)) { while (list($cur_key, $cur_val) = each($val)) { $postdata .= urlencode($key)."[]=".urlencode($cur_val)."&"; } } else $postdata .= urlencode($key)."=".urlencode($val)."&"; }
借用了下snoopy里的拼参方式.