在近期的一次对接第三方接口时出现了一个很疑惑的问题,调试时单独调用一次的接口没问题,但是重复调用多次的接口却出现http200的响应,Response Body的响应确实nginx 400.
开始以为时对方的服务器可用性不强,导致的问题.排查后发现单独调用他们的一个接口正常响应,组合调用的话第二个请求调用不能正常响应,请求发起都是通过父类中封装的get方法发送的请求.
在一番排错后才发现原来是在PHP一个脚本执行周期中对象的属性时常驻的.而且对方的接口入参限制十分严格,在我上一次的请求时header头信息已经被写入,resonse数据也以写入,也就是说curl的对象已经被污染.所以导致的nginx400的响应.
应当谨记在面向对象过程中注意对象数据的变动.