我在服务端声明:
function Test(const AStr:String):String;stdcall;
begin
  Result:=AStr;
end;客户端调用。但是,很奇怪的是,每次测试时发现,有几个汉字只要一输入就会出错,报告什么tag标记不匹配什么的,诸如此类的错误比如“大”字,但是“大计”这个词语却是好的,但是“大机房”却又报同样错误,如果说是奇数汉字有误,但是“一”却又是好的而且似乎现象是时好时坏,有时一些汉字可以通过,有时候又不可以,请问有没有人遇到过这种问题??

解决方案 »

  1.   

    SOAP不支持DELPHI的数据类型string吧
    用Variant类型试试
      

  2.   

    不能用string,用PChar,  wedestring不知道行不,你试试
      

  3.   

    string,强制制定为ansistring,widestring均不行
      

  4.   

    而我声明PChar的时候,为什么报告说,PAnsiChar has no type info呢?
      

  5.   

    uses 加 system 
    应该不会出这个问题吧,是不是你的Delphi除了问题?
      

  6.   

    :我又确定了,Variant不行。具体错误信息为:End tag'NS1:Test' does not match the start tag 'AStr'line:2
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http:
      

  7.   

    加uses system就报告E2004 Identifier redeclared: 'System'
      

  8.   

    SOAP是跨语言的,它应该是支持Variant类型的.
    以前通过SOAP调用JAVA的中间件,好象是用的BSTR类型传XML文本内容的
    应该通过Type Library增加接口方法来产生函数声明,它不会列出不支持的类型的
      

  9.   

    system是肯定被编译的单元,不能显式uses的,怎么能uses system???
      

  10.   

    我的机器上安装的是delphi2006和delphi7
    现在出错的就是delphi2006的程序,但是同样的服务端程序使用delphi7编译一遍,然后使用delphi7创建客户端编译则无错;如果用delphi2006的客户端连接delphi7编译的服务端,则错误提示相同。我想问一下,目前这种错误是否有可能是因为两个delphi系统的安装导致的?使得目前soap的协议架构还是使用的delphi7的架构,继而导致delphi2006的客户端无法正确解析协议包?有没有这种可能呢?
      

  11.   

    delphi 6 的soap版本是 1.1 
    delphi7 的soap版本是2.0
    2006 ?????
    原来我们用7的发出的包,6的接收发现包小了一点,呵呵
      

  12.   

    问题在于,客户端和服务端全部重新用delphi2006编译过一遍还是会出同样的问题,到底是怎么回事
      

  13.   

    终于自己努力解决了这个问题了~!!!!!!!!!!!!!!!!!
    原来是delphi2006中soap协议默认配置的问题:~!!!散分~!