一次 php nusoap 调试过程
今天跟同事调用一个数据api ,用soap方式调用。本以为很简单的事情,却弄到了晚上。因为有过调试经验,直接按照以往的过程直接部署,结果是错误。
1. 以为是调用方式错了,问了一下对接的同事,没问题,并把参数复制过去,同事在自己的机器上,调试正确。
2. 仔细询问了一下,发现请求IP 错误,(这个IP 是另外一个同事给的),ip已经下架了。 更换IP
3. 更换之后还是不行,发现新的ip 与自己的机器不能通信,新Ip 为线上IP段,而我的开发机是开发段,不能直接访问。
4. 由于此API 用处不是很多,所以没有开发环境, 更悲剧的是,另一个API只有开发环境,没有线上测试环境, 悲剧
5. 单独拿到线上测试此接口,竟然还是不行,跟对接同事联调了一下,还是我这里不行,他哪里行。我们都没有办法
6.找到此API的开发者,看了我的调用方式没有什么问题, 又没有ip限制,这是为什么呢?他在服务段 写了一个测试文件,我用curl 访问了一下,成功! 说明网络通信没问题,还是soap 的调用有问题。
7.对比发现,他们调用都是用的php 的soap 模块,我们是用nusoap 文件调用。但是经验来说,两种方法都可以调用。对比了nusoap 版本 也没有问题。
最后还是 开发者发现了问题,是client调用二者还是有区别的。
二者区别:
soap 模块 : $this->client = new nusoapclient(null, array("location" => $this->url, "uri" => "http://data_request/", 'compression' =>
SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP, 'encoding' => .'utf-8', 'trace' => true));
nusoap: $this->client = new nusoapclient($this->url);
8.最后pE 同学解决了 测试环境不统一的问题,他设置了一个代理(具体方法没问)
感觉这么小的问题,用了这么长 时间有两个原因:
1. 自己对nusoap 掌握不熟练,不能快速定位到问题所在。虽然以前调用过,但都是拿来主义,环境都是统一的,基本没有遇到问题。
2. 业务线长,先后找了四位同学,解决了一个问题,都要从头调式,测试的时候都要改动。 看来 人月 神话,果然是神话呀。
页:
[1]