delphi2006调用C#的WebService
(2013-10-10 10:13:17)
标签:
美食 |
分类: 计算机 |
2013-10-10 周四
传递中文参数老是报错。
//add-------to support UTF-8
RIO.HTTPWebNode.UseUTF8InHeader := true;
//添加该行,指定采用UTF-8代码传输
RIO.Converter.Encoding:='UTF-8';
RIO.Converter.Options:=RIO.Converter.Options +
[soUTF8InHeader,soUTF8EncodeXML];
//add-------END
RIO: THTTPRIO;
Result := nil;
if (Addr = '') then
begin
if UseWSDL then
Addr
:= defWSDL
else
Addr
:= defURL;
end;
if HTTPRIO = nil then
RIO :=
THTTPRIO.Create(nil)
else
RIO := HTTPRIO;
InvRegistry.RegisterInterface(TypeInfo(SIPPlanApproval2009WebService_forAGSSoap),
'http://unimap.com/', 'utf-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(SIPPlanApproval2009WebService_forAGSSoap),
'http://unimap.com/%operationName%');
InvRegistry.RegisterInvokeOptions(TypeInfo(SIPPlanApproval2009WebService_forAGSSoap),ioDocument);
解决方法如下:
(1)在uses中增加OPConvert引用;
(2)在主函数中加入以下内容:
添加的位置是以下代码的下面:
var
begin
(3)在文件的末尾,也就是 initialization 的最后加入以下语句:
InvRegistry.RegisterInvokeOptions(TypeInfo(SIPPlanApproval2009WebService_forAGSSoap),ioDocument);
这样,完整的initialization 就变成
initialization
其中SIPPlanApproval2009WebService_forAGSSoap是服务名;根据你调用的webService不同而不同;
这样自动产生的文件就修改完成了;
前一篇:魔都大积水
后一篇:猪猪美食:快乐鸟精品小厨