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里的拼参方式.

你可能感兴趣的:(Build)