调用webservice出错
连接webservice后生成的模块代码如下:
unit DataTransmissionService1;
interface
uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
type
DataTransmissionService = interface(IInvokable)
['{5BAC4FD9-8B6F-C20F-1765-14E0CCFB7CFC}']
function transportEnergyData(const buildingid:WideString;const gatewayid:WideString;const sequence:WideString;const md5:WideString;const mymessage:WideString): WideString; stdcall;
function transportHeartBeat(const buildingid:WideString;const gatewayid:WideString): WideString; stdcall;
end;
function GetDataTransmissionService(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): DataTransmissionService;
implementation
function GetDataTransmissionService(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): DataTransmissionService;
const
defWSDL = 'http://data.yangpufxjl.org:9000/DataTransmissionService?WSDL';
defURL = 'http://data.yangpufxjl.org:9000/DataTransmissionService';
defSvc = 'DataTransmissionService';
defPrt = 'DataTransmissionServicePort';
var
RIO: THTTPRIO;
begin
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;
try
Result := (RIO as DataTransmissionService);
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;
end;
initialization
InvRegistry.RegisterInterface(TypeInfo(DataTransmissionService), 'http://platform.ems.jky/', 'UTF-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(DataTransmissionService), '');
InvRegistry.RegisterInvokeOptions(TypeInfo(DataTransmissionService), ioDocument);
InvRegistry.RegisterInvokeOptions(TypeInfo(DataTransmissionService), ioLiteral);
end.
调用代码如下:
var
sendstring:string;//要发送的数据包
mysend:DataTransmissionService;//webservice的服务器定义
md5:string;
begin
mysend:=GetDataTransmissionService(False,'',nil);
md5:=model.MD5Ecryption(AuthenticationKey+sequence);
sendstring:=mysend.transportHeartBeat(building_id,gateway_id);
end;
报错如下:
cannot find dispatch method for
{http://schemas.xmlsoap.org/soap/envelope/}string
是服务器没连上吗,第一次做webservice,真心不懂,望各位高手指点