我在Delphi中用import wdsl的方法调用.net的Web Service,当Delphi程序在调用该Web Service的web方法时,将一个中文字符串作为参数传入到该方法中,在调试中发现在Web Service中执行该方法是传入的中文都变成了问号。请问如何解决该问题

解决方案 »

  1.   

    据说传入的时候字符要加pchar()顺便问个问题,delphi调用.net的webservice的时候,那个接口单元的代码怎么来的,不是要自己写吧(以前没搞过.net)
      

  2.   

    接口单元菜单New 那里引入就可以了。
      

  3.   

    HTTPPRIO中有一属性HEEPWEPNODE USEUTF8inharder 修改为true ,中文字符就没有问题了,
      

  4.   

    lxw76(风起云飞扬) 是正确的,呵呵.
    -----------------------------------------------------------------------------------
        Delphi7编写的客户端调用C#编写的WebService服务时,如果函数中传递的参数为汉字时,可能出现乱码现象。    在网上搜索了一些资料,找到解决办法:将HTTPRIO的UseUTF8InHeader属性改为true即可。
        即编辑由Import WSDL文件生成的 *.pas 单元文件,在Get函数中增加一句:RIO.HTTPWebNode.UseUTF8InHeader:=True。
        
        代码片断大致如下:    ------------------
          .......
          try
            RIO.HTTPWebNode.UseUTF8InHeader:=True; //在此添加一句,修改编码方案。
            Result := (RIO as test);
            if UseWSDL then
            begin
              RIO.WSDLLocation := Addr;
              RIO.Service := defSvc;
              RIO.Port := defPrt;
            end else
              RIO.URL := Addr;
          finally
            if (Result = nil) and (HTTPRIO = nil) then
              RIO.Free;
          end;
         .......
        ----------------