delphi 调用webservice时,可能没有序列化,出现如下错误:
   '' is not a vaild integer value,操作正常,那么请问高手,如何在delphi实现
序列,java里倒是有序列类

解决方案 »

  1.   

    看错误好象是类型转化错误,但是是调用远程的webservice引起的,方法已经调用成功,并且可以执行,但是就出这个问题,应该是类没有序列化;
    序列化就是把类影射成xml
      

  2.   

    TSmallIntDynArray     = array of SmallInt;
      TByteDynArray         = array of Byte;
      TShortIntDynArray     = array of ShortInt;
      TInt64DynArray        = array of Int64;
      TLongWordDynArray     = array of LongWord;
      TSingleDynArray       = array of Single;
      TDoubleDynArray       = array of Double;  TBooleanDynArray      = array of Boolean;
      TStringDynArray       = array of string;
      TWideStringDynArray   = array of WideString;//==========
    我用的TbyteDynarray写的ws传输各种文件,用法和数组一样.
      

  3.   

    RE baiduan(-_-化杯粪喂力量-_-) :
     你用的都是基本的类型,也不需要序列化,因为不需要,当传递复杂类型的时候就需要将传递的值进行序列,按照理论好象这样,在最新的sdo定义文档中有这钟说法
      

  4.   

    WebService是用什么语言写的?异常出在客户端还是服务器端?
      

  5.   

    WebService采用java,axis写成,客户端delphi ,异常在客户端
      

  6.   

    异常是服务器发生后返回给Delphi然后在Delphi产生一个本地异常么?函数执行前发生的还是函数执行后发生的?
      

  7.   

    根据服务器上的结果判断是在执行前还是执行后呢……因为要判断问题是在HTTPRIO对消息参数序列化问题上还是对返回值序列化问题上
      

  8.   

    根据调试应是要对消息参数序列化,即在返回给webservice以前,将对象进行序列
      

  9.   

    那你服务器端接口定义和客户端是一样的?
    你那出错消息是在string->integer时发生的,而调用WebService对参数序列化是全部到string。除非是返回值才可能string->integer,或者是服务器将string->integer
      

  10.   

    lz你去实验下在说啊.
    序列化就是把非字符的东西转化非字符并且b64的,因为ws是基于xml的,xml是由字符构成的.
     TByteDynArray         = array of Byte 
    如果在ws使用这TByteDynArray ,那么delphi包装发送的时候就自己转化加密.
    例如
    function getstr(str1:TByteDynArray):boolean;stdcall;
    客户端就可以提交str1到服务器端.
    其他的类型依次类推.如果是复杂的记录数据就强制转换下 
    TYouRecord(Str)
    你也可以传递对象,这个方法书上有.