Delphi调用VS2005 WebService编码问题 ( 积分: 100 )

  • 主题发起人 主题发起人 【骷髅】
  • 开始时间 开始时间

【骷髅】

Unregistered / Unconfirmed
GUEST, unregistred user!
开发环境
服务端:VS2005 C#
客户端:Delphi2006
************************服务端部份源码************************
[WebMethod]
public bool UserLogin(string LoginName, string Password)
{
.... ....
}
**********************客户端********************************
WSDL Inport 产生的文件
... ...
function GetServiceSoap(UseWSDL: Boolean;
Addr: string;
HTTPRIO: THTTPRIO): ServiceSoap;
const
defWSDL = 'http://localhost:1203/WebApp/Service.asmx?WSDL';
defURL = 'http://localhost:1203/WebApp/Service.asmx';
defSvc = 'Service';
defPrt = 'ServiceSoap';
var
RIO: THTTPRIO;
begin
... ...

RIO.Converter.Options :=
RIO.Converter.Options +[soUTF8InHeader,soUTF8EncodeXML];
RIO.HTTPWebNode.UseUTF8InHeader:=True;

... ...
end;

initialization
... ...
InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);
... ...
end.

... ...
客户端调用代码
... ...
procedure TLoginForm.btn_OKClick(Sender: TObject);
var
s:ServiceSoap;
begin
s:=GetServiceSoap();
if s.UserLogin(txt_Loginname.Text,txt_Password.Text) then
ShowMessage('登录成功')
else
ShowMEssage('登录失败');
end;
... ...


********************问题*********************
按照上面的方法已经解决了,参数传递失败,部分中文乱码问题,但是对于特定的中文如
UserName:='四 ' 的时候,在服务端接收到的参数为? (注在四后有一个半角空格)
再者
UserName:='孙逊' 的时候,在客户端会直接报错EDOMParseError.
后来无意中发现 如果在 孙逊后加一个全角的空格,则收到的参数正确.
请问有什么什么方法可以让DELPHI+C# WebService 正常的支持中文呢?
 

Similar threads

后退
顶部