Q:

Why is this SOAP API call to SFMC failing? 

I am struggling to find a reason why this API call is failing.  Obviously the username and password are incorrect - but that should at least give an error message of access denied.  Can anyone see why this is a invalid SOAP message? 
I am just getting this 500 Internal Server Error.  
<soap:Reason>
<soap:Textxml:lang="en">
WSE012: The input was not a valid SOAP message 
because the following information is missing: action. 
</soap:Text>
</soap:Reason>

My SOAP Call
 <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <Header>
      <Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
         <UsernameToken>
            <Username>MYSUERNAME</Username>
            <Password>PASSWORD</Password>
         </UsernameToken>
      </Security>
   </Header>
   <Body>
      <CreateRequest xmlns="http://exacttarget.com/wsdl/partnerAPI ">
         <Objects xsi:type="TriggeredSend">
            <PartnerKey xsi:nil="true"/>
            <ObjectID xsi:nil="true"/>
            <TriggeredSendDefinition>
               <PartnerKey xsi:nil="true"/>
               <ObjectID xsi:nil="true"/>
               <CustomerKey>Definition_Key</CustomerKey>
            </TriggeredSendDefinition>
            <Subscribers>
               <PartnerKey xsi:nil="true"/>
               <ObjectID xsi:nil="true"/>
               <EmailAddress>aruiz@example.com</EmailAddress>
               <SubscriberKey>aruiz@example.com</SubscriberKey>
               <Attributes>
                  <Name>HTML__BODY</Name>
                  <Value>????????????????????</Value>
               </Attributes>
            </Subscribers>
         </Objects>
      </CreateRequest>
   </Body>
</Envelope>

A:

The SOAP Action has to be specified in either the HTTP Header or the SOAP XML Header:
HTTP Header:
SOAPAction: Create

Soap Header:
<s:Header>
   <a:Action s:mustUnderstand="1">Create</a:Action>
   <a:MessageID>urn:uuid:f7579936-b92f-4596-9050-327b8252f4e2</a:MessageID>
   <a:To s:mustUnderstand="1">https://webservice.exacttarget.com/Service.asmx</a:To>
   <o:Security s:mustUnderstand="1" xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
      <o:UsernameToken u:Id="uuid-df86d8b8-5103-442e-93d9-258256222ce0-1">
         <o:Username>ccc</o:Username>
         <o:Password>ccc</o:Password>
      </o:UsernameToken>
   </o:Security>
</s:Header>

If you are using SOAPUI, it automatically builds out the HTTP header with the appropriate SOAP action based on what is selected under SoapBinding in the Projects explorer.  You can see this by clicking the raw tab when looking at a request. 