EDM ile e-fatura gönderme işlemine uğraşıyorum. Firmanın Login olma prosedürünü deniyorum. Kendi örnekleri ile XE6'da ve sorunsuz login olabiliyorum ama aynı kodu XE'de çalıştırdığım zaman kullanıcı adı şifre boş hatası alıyorum. Gönderilen zarfları karşılaştırmak adına kullanabileceğim bir site - araç vs. var mıdır ?
HTTPS ile baglandigimiz bir sunucuya gden gelen paketlerin güvende oldugunu, WireShark ile izlenemeyecegini umuyordum ama hic de oyle degil, her şey acik net izlenebiliyormus.
Kimse uyanmadan şimdi ne yapacagiz?
(25-02-2019, Saat: 09:31)boreas Adlı Kullanıcıdan Alıntı: [ -> ]EDM ile e-fatura gönderme işlemine uğraşıyorum. Firmanın Login olma prosedürünü deniyorum. Kendi örnekleri ile XE6'da ve sorunsuz login olabiliyorum ama aynı kodu XE'de çalıştırdığım zaman kullanıcı adı şifre boş hatası alıyorum. Gönderilen zarfları karşılaştırmak adına kullanabileceğim bir site - araç vs. var mıdır ?
HTTPRIO1 bileşeni ile SOAP web servislerini çağırırken
OnBeforeExecute eventı içerisinde gönderilen XML kodunu elde edebilir ve gönderilmeden önce bu XML kodu üzerinde değişiklik yapabilir hatta bu XML kodunu sıfırdan kendiniz oluşturabilirsiniz.
Aşağıdaki örnekte yapılan bir SOAP çağrısında gönderilecek XML kodu tamamen yeniden oluşturulmuş ve bizim elle oluşturduğumuz XML kodunun gönderilmesi sağlanmıştır.
procedure TForm1.HTTPRIO1BeforeExecute(const MethodName: string;
SOAPRequest: TStream);
var
StrList1: TStringList;
begin
StrList1 := TStringList.Create;
try
SOAPRequest.Position := 0;
StrList1.LoadFromStream(SOAPRequest);
if MethodName = 'BlaBla' then
begin
StrList1.Clear;
StrList1.Add('<?xml version="1.0" encoding="UTF-8"?>');
StrList1.Add('<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">');
StrList1.Add(' <s:Header>');
StrList1.Add(' <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">');
StrList1.Add(' <o:UsernameToken u:Id="uuid-b74abe12-c52d-4b40-a26c-d5610fa14225-2">');
StrList1.Add(' <o:Username>' + FalanUser + '</o:Username>');
StrList1.Add(' <oassword Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">' + FalanSifre + '</oassword>');
StrList1.Add(' </o:UsernameToken>');
StrList1.Add(' </o:Security>');
StrList1.Add(' </s:Header>');
StrList1.Add(' <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">');
StrList1.Add(' <MCCI_IN000001TR01 xmlns="urn:hl7-org:v3">');
StrList1.Add(' <id root="2.16.840.1.113883.3.129.2.1.2" extension="858b0066-fdec-494f-b5af-e8e0f7e8d671"/>');
StrList1.Add(' <creationTime value="' + FormatDateTime('yyyymmddhhnnss', Now) + '"/>');
StrList1.Add(' <responseModeCode code="Q"/>');
StrList1.Add(' <interactionId root="2.16.840.1.113883.3.129.2.1.1" extension="MCCI_IN000001TR01"/>');
StrList1.Add(' <processingCode code="P"/>');
StrList1.Add(' <processingModeCode code="T"/>');
StrList1.Add(' <acceptAckCode code="AL"/>');
StrList1.Add(' <receiver typeCode="RCV">');
StrList1.Add(' <device determinerCode="INSTANCE" classCode="DEV">');
StrList1.Add(' <id root="2.16.840.1.113883.3.129.1.1.5" extension="e-Sağlık"/>');
StrList1.Add(' </device>');
StrList1.Add(' </receiver>');
StrList1.Add(' <sender typeCode="SND">');
StrList1.Add(' <device determinerCode="INSTANCE" classCode="DEV">');
StrList1.Add(' <id root="2.16.840.1.113883.3.129.1.1.5" extension="123"/>');
StrList1.Add(' </device>');
StrList1.Add(' </sender>');
StrList1.Add(' <controlActEvent moodCode="EVN" classCode="CACT">');
StrList1.Add(' <subject typeCode="SUBJ">');
StrList1.Add(' <ClinicalDocument moodCode="EVN">');
StrList1.Add(' <Falan filan falan filan>');
StrList1.Add(' </ClinicalDocument>');
StrList1.Add(' </subject>');
StrList1.Add(' </controlActEvent>');
StrList1.Add(' </MCCI_IN000001TR01>');
StrList1.Add(' </s:Body>');
StrList1.Add('</s:Envelope>');
end;
SOAPRequest.Position := 0;
StrList1.SaveToStream(SOAPRequest);
finally
StrList1.Free;
end;
end;
Aynı şekilde
OnAfterExecute eventı içerisinde geri dönen XML kodu okunabilir ve üzerinde değişiklik yapabilirsiniz.
procedure TForm1.HTTPRIO1AfterExecute(const MethodName: String;
SOAPResponse: TStream);
var
StrList1: TStringList;
begin
inherited;
StrList1 := TStringList.Create;
try
SOAPResponse.Position := 0;
StrList1.LoadFromStream(SOAPResponse);
ShowMessage('CEVAP OLARARAK GELEN XML KODLARI: ' + #13#10#13#10 + StrList1.Text + #13#10);
finally
StrList1.Free;
end;
end;