Ok, so you can to this only with DF (Tested with 18.2+, I don't now if this works in previous versions.)

I created a personal class, using the cXmlHttpTransfer. Create a pkg like this:

Use cXmlHttpTransfer.pkg
Use SoapConstants.pkg

Class cWsWebservice is a cXmlHttpTransfer
Procedure Construct_Object
Integer eTransferFlags
Forward Send Construct_Object Property String psNameSpaceWs "http://www.yourwebservicedata.com" Property String psHostWs "app.yourwebservicedata.com" (Consult your ws docs) Property String psEnderecoWs "/yourwebservice.asmx" Property String psSoapActionWs "http://www.yourwebservicedata.com/yourwsaction" (Consult the action in your ws docs) Set psAcceptTypes to "text/*" Set psContentTypeSent to (C_ContentTypeSOAP + "; charset=UTF-8") Set psContentTypeExpected to C_ContentTypeSOAP Set piRemotePort to rpHttpSSL Set pbDataRequiredReceived to True Get peTransferFlags to eTransferFlags Set peTransferFlags to (AddBitValue(ifSecure, eTransferFlags)) // if secure we must set this flag Set pbClearHeaders to False Set piBufferSize to 16000 Set peTranslateSent to xtOemtoUtf8 Set peTranslateReceived to xtUtf8toOem

After, use like this:

Get Create (RefClass(cWsWebservice)) to hoHttp
Get psSoapActionWs of hoHttp to sSOAPAction
Get psNameSpaceWs  of hoHttp to sNS
Get AddHeader    of hoHttp "SOAPAction" ('"' - sSOAPAction - '"') to iRet
Get SelectClientCertificate of hoHttp "MY" "YOUR CERTIFICATE NAME IN WINDOWS CERTSTORE" to iRet

// Mount your SOAP XML to send here
Move '<?xml version="1.0" encoding="utf-8"?>' to sXML
Append sXML '</soapenv:Envelope>'

Get Create (RefClass(cXMLDOMDocument)) to hoXml
Get LoadXML of hoXML sXML to iRet
If iRet Begin
    Get HttpPostXmlNode of hoHttp (psHostWsES(hoHttp)) (psEnderecoWsES(hoHttp)) hoXML to hoRet
    Send Destroy of hoXML
// Here, if you received anything in hoRet, use it like you need.
I hope this helps.