1

I am currently sending an XML POST (using TidHTTP) to a web server, and I am successfully getting a response, however the body is missing! I feel like I have tried everything to get this working! The body contains crucial data which I would need to parse for use later on.

Is there a way for me to get TidHTTP to return the body too?

Thanks!

procedure TMainForm.sendXML(correlationID : String);
var
pollXML : TStringList;

AuthNetHTTP: TIdHttp;
AuthNetSSL: TIdSSLIOHandlerSocketOpenSSL;

XMLRequest: TMemoryStream;
XMLResponse: String;
Response : TStringList;

begin
      pollXML := TStringList.Create;
      pollXML.Add('<?xml version="1.0" encoding="UTF-8"?>');
      pollXML.Add('<GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope">');
      pollXML.Add('<EnvelopeVersion>2.0</EnvelopeVersion>');
      pollXML.Add('<Header>');
      pollXML.Add('<MessageDetails>');
      pollXML.Add('<Class>'+HMRC_submission_mode+'</Class>');
      pollXML.Add('<Qualifier>poll</Qualifier>');
      pollXML.Add('<Function>submit</Function>');
      pollXML.Add('<TransactionID></TransactionID>');
      pollXML.Add('<CorrelationID>'+correlationID+'</CorrelationID>');
      pollXML.Add('<Transformation>XML</Transformation>');
      pollXML.Add('</MessageDetails>');
      pollXML.Add('</Header>');
      pollXML.Add('<GovTalkDetails>');
      pollXML.Add('<Keys/>');
      pollXML.Add('</GovTalkDetails>');
      pollXML.Add('</GovTalkMessage>');
      pollXML.SaveToFile(GetCurrentDir+'\'+'\active_poll_xml.xml',TEncoding.UTF8);

      XMLRequest := TMemoryStream.Create;
      XMLRequest.LoadFromFile(GetCurrentDir+'\'+'\active_poll_xml.xml');

      //Prep Web Request
      AuthNetHTTP := TidHTTP.Create(nil);
      AuthNetSSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
      AuthNetHTTP.IOHandler := AuthNetSSL;
      AuthNetHTTP.Request.ContentType := 'text/xml';
      AuthNetHTTP.ConnectTimeout := 10000;
      AuthNetHTTP.ReadTimeout := 10000;

      AuthNetHTTP.Request.ContentEncoding := 'utf-8';
      try
        XMLResponse := AuthNetHTTP.Post(pollURL, XMLRequest);
        Response := TStringList.Create;
        Response.Add(XMLResponse);
        Response.SaveToFile(GetCurrentDir+'\'+'Java\PollResults.xml');


        ShowMessage(XMLResponse);
        AuthNetHTTP.Disconnect;
      except on e: exception do
        ShowMessage('Server Error: ' + e.message);
       end;

      AuthNetHTTP.Free;
      AuthNetSSL.Free;

end;`

Ken White
  • 123,280
  • 14
  • 225
  • 444

0 Answers0