Через delphi я заставляю клиента общаться с ws.
WSDL:
visualizzaErogatoPT = interface(IInvokable)
['{AD9DB9DE-E3E4-1FD0-171D-FD78913E0E54}']
function visualizzaErogato(const VisualizzaErogatoRichiesta: VisualizzaErogatoRichiesta): VisualizzaErogatoRicevuta; stdcall;
end;
function GetvisualizzaErogatoPT(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): visualizzaErogatoPT;
VisualizzaErogatoRichiesta = class(TRemotable)
private
FpinCode: stringType;
FcodiceRegioneErogatore: stringType;
FcodiceAslErogatore: stringType;
FcodiceSsaErogatore: stringType;
Fpwd: pwdType;
Fnre: nreType;
FcfAssistito: stringType;
FcfAssistito_Specified: boolean;
FtipoOperazione: tipoOperazioneType;
procedure SetcfAssistito(Index: Integer; const AstringType: stringType);
function cfAssistito_Specified(Index: Integer): boolean;
public
constructor Create; override;
published
property pinCode: stringType read FpinCode write FpinCode;
property codiceRegioneErogatore: stringType read FcodiceRegioneErogatore write FcodiceRegioneErogatore;
property codiceAslErogatore: stringType read FcodiceAslErogatore write FcodiceAslErogatore;
property codiceSsaErogatore: stringType read FcodiceSsaErogatore write FcodiceSsaErogatore;
property pwd: pwdType read Fpwd write Fpwd;
property nre: nreType read Fnre write Fnre;
property cfAssistito: stringType Index (IS_OPTN) read FcfAssistito write SetcfAssistito stored cfAssistito_Specified;
property tipoOperazione: tipoOperazioneType read FtipoOperazione write FtipoOperazione;
end;
procedure TMainF.Button2Click(Sender: TObject);
var
richiesta: VisualizzaErogatoRichiesta;
ricevuta: VisualizzaErogatoRicevuta;
begin
richiesta.codiceRegioneErogatore := '190';
richiesta.codiceAslErogatore := '201';
richiesta.codiceSsaErogatore := '888888';
richiesta.pwd := '';
richiesta.nre := '1900A4005026299';
richiesta.tipoOperazione := '1';
try
ricevuta := (HTTPRIO1 as visualizzaErogatoPT).visualizzaErogato(richiesta);
label1.Caption := ricevuta.nre;
except
on E: Exception do
showmessage(E.Message);
end;
end;
Я получаюошибка. (EsoapDomConvertError .... Классы мыла должны устройства из Tremotable)
Для аутентификации я использовал компонент: HTTPRIO и HTTPReqResp
procedure TMainF.HTTPReqResp1BeforePost(const HTTPReqResp: THTTPReqResp;
Data: Pointer);
var
auth: String;
FUserName, FPassword : string;
begin
FUserName:='XXXXXXXX';
FPassword:='XXXXXXXX';
auth := 'Authorization: Basic ' + TNetEncoding.Base64.Encode(FUserName + ':' + FPassword);
HttpAddRequestHeaders(Data, PChar(auth), Length(auth), HTTP_ADDREQ_FLAG_ADD);
end;
Я не знаю, какзаставить эти компоненты работать.
Я пробовал разные способы безрезультатно.Нужно ли использовать «базовые» компоненты аутентификации (HTTPRIO и HTTPReqResp), требуемые WS?Я ищу руководство, чтобы построить это.