昨天有使用soap传输数据到webservice,其中字符串类型的都已经传输成功,但是有几个参数传输失败,java服务器端收到的空值。

  因为我是php的,然后接收端是java制作的,其中有几个参数是list数组类型的,我刚开始将php的数组传过去,服务端接收到的是空,然后再使用json格式还是不行。后来去询问java同事,他们说list数组类型不像php一样是有键值和键名的,

  java的list数组是只有name和value对应关系,如下所示

 

$arr = array('userid'=>1,'name'=>'张三',params=>arrary(array('name'=>'数组1','value'=>'值1'),'name'=>'数组2','value'=>'值2'));

  将数组通过name和value对应关系后传输给java,java就能解析list数组进行存储。

  __soapcall返回的是object类型的数组,可以先使用json_encode,然后再json_decode进行转换,变为数组格式进行分析判断。

  到此为止,soap传输数据总算完成了。接下来就是一些细节对接问题。因为webservice是有用户校验的,因此我需要先使用它们的登录方法进行登录,然后获取到对应的session值。为了避免不必要的重复登录步骤,因此我将此session值缓存下来,

  放入到cash目录下,然后每次传输数据时都先取然后传输,如果session过期或者无效,根据返回的code判断然后再重新登录更新session值。