Why do I not get 'OK' but "ERR_EMPTY_RESPONSE" in Chrome?
procedure TWork.RtcDataProvider1DataReceived(Sender: TRtcConnection);
var
ResultText, StatusText: rtcString;
begin
with Sender as TRtcDataServer do
begin
if Request.Complete then
begin
Write('OK');
TransactionID_str := Request.Query['transactionid'];
if DoDebug then
Memo1.Text := Memo1.Text + ' received: ' + Request.Params.Text;
Memo1.Lines.Add('ID=' + TransactionID_str);
try
IDealRecNr := StrToInt(TransactionID_str);
except
on E: Exception do
if DoDebug then
Memo1.Lines.Add('Fout bij vertalen recordnummer van parameter : ' + E.Message);
end;
with RtcDataRequest1 do
begin
Request.FileName := '/' + TransactionID_str;
CoInitialize(nil);
// make XML-file:
Exportfilenaam := 'IDeal_' + IntToStr(IDealRecNr) + '.XML';
XMLDoc1.Active := false;
XMLDoc1.Xml.Text := '';
XMLDoc1.Active := true;
XMLDoc1.Encoding := 'UTF-8';
XMLDoc1.AddChild('Pricat', '
http://www.ean.nl');
XMLDoc1.DocumentElement := XMLDoc1.CreateNode('status');
XMLDoc1.DocumentElement.Attributes['ua'] := 'RTC Library)';
// merchant
iNode_Merchant := XMLDoc1.DocumentElement.AddChild('merchant');
iChild := iNode_Merchant.AddChild('account');
iChild.Text := DM1.nxT_algpar.FieldByName('IDeal_account').AsString;
iChild := iNode_Merchant.AddChild('site_id');
iChild.Text := DM1.nxT_algpar.FieldByName('IDeal_site_id').AsString;
iChild := iNode_Merchant.AddChild('site_secure_code');
iChild.Text := DM1.nxT_algpar.FieldByName('IDeal_site_secure_id').AsString;
// transaction
iNodeTransaction := XMLDoc1.DocumentElement.AddChild('transaction');
iChild := iNodeTransaction.AddChild('id');
iChild.Text := IntToStr(IDealRecNr);
// bestand maken:
XMLDoc1.SaveToXML(XML_string);
if DoDebug then
begin
XMLDoc1.SaveToFile(DM1.XML_Dir + Exportfilenaam);
Memo1.Lines.Add('URL that is sent to MSP:');
Memo1.Lines.Add(XML_string);
end;
// now get the information
if DM1.TestString = '1' then
begin
RtcHttpClient1.ServerAddr := DM1.SiteURL; // 'api.MultiSafepay.com'
RtcHttpClient1.ServerPort := IntToStr(DM1.SitePort);
RtcDataRequest1.Request.FileName := '/ewx/';
RtcDataRequest1.Request.Host := DM1.SiteURL; // 'api.MultiSafepay.com'
RtcDataRequest1.Write(XML_string);
RtcDataRequest1.Request.ContentLength := Length(XML_string);
end;
// if DM1.TestString = '2' then
// begin
// RtcHttpClient1.ServerAddr := '
http://localhost:22333/ewx/'; // RtcHttpClient1.ServerPort := '80'; // IntToStr(443); // 443
// // RtcDataRequest1.Request.FileName := '/ewx';
// RtcDataRequest1.Request.Clear;
// RtcDataRequest1.Request.Host := '
http://localhost:22333/ewx/'; // RtcDataRequest1.Write(XML_string);
// RtcDataRequest1.Request.ContentLength := Length(XML_string);
// end;
try
// Post the request with 'POST' :
RtcDataRequest1.PostMethod('POST');
WaitForCompletion;
except
on E: Exception do
if DoDebug then
Memo1.Lines.Add('Error with getting information by MSP : ' + E.Message)
end;
XMLDoc1.Active := false;
XMLDoc2.Active := false;
if RecvContent <> '' then
begin
XMLDoc2.LoadFromXML(RecvContent); // Response is an XML file
XMLDoc2.Active := true;
// now get the information from XMLdoc2:
ResultText := XMLDoc2.DocumentElement.Attributes['result'];
iNodeEwallet := XMLDoc2.DocumentElement.ChildNodes.FindNode('ewallet');
iNodeStatus := iNodeEwallet.ChildNodes.FindNode('status');
if assigned(iNodeStatus) then
StatusText := iNodeStatus.Text;
// if the received message is OK then complete the database:
if DM1.nxT_IDealRecords.FindKey([IDealRecNr]) then
begin
if Uppercase(ResultText) = 'OK' then
begin
DM1.nxT_IDealRecords.Edit;
DM1.nxT_IDealRecords.FieldByName('StatusOntvangen').AsBoolean := true;
DM1.nxT_IDealRecords.FieldByName('Status').AsString := StatusText;
if Uppercase(StatusText) = 'COMPLETED' then
DM1.nxT_IDealRecords.FieldByName('BetalingOK').AsBoolean := true;
DM1.nxT_IDealRecords.Post;
end
else
begin
DM1.nxT_IDealRecords.Edit;
DM1.nxT_IDealRecords.FieldByName('StatusOntvangen').AsBoolean := false;
DM1.nxT_IDealRecords.FieldByName('Status').AsString := StatusText;
DM1.nxT_IDealRecords.FieldByName('Foutkode').AsString := ResultText;
DM1.nxT_IDealRecords.Post;
end;
end
else if DoDebug then
Memo1.Lines.Add('Kan IDealrecord niet vinden');
// bewaren als laatste zodat eerst de database wordt bijgewerkt
if DoDebug then
begin
DatumTijdString := U_Henk_Extra_Procs_Funcs.RemoveIllegalChars(DateTimeToStr(now));
XMLDoc2.SaveToFile(DM1.XML_Dir + DatumTijdString + '_retour_xml_van_MSP' + IntToStr(IDealRecNr) + '.xml');
end;
end
else // if RecvContent <> ''
Memo1.Lines.Add('Ontvangen van MSP: ' + RecvContent);
CoUninitialize;
end;
end;
end;
end;
Henk van den Boogaard