You don't need to add i:type=\"a:RetrieveRequest\" part to request. Please find below a function that I have used to call actions in the past.
function ActionCall(ActionName, Guid, EntityLogicalName) {
    var requestXML = ""
    requestXML += "<s:Envelope xmlns:s=\"schemas.xmlsoap.org/.../envelope\">";
    requestXML += "  <s:Body>";
    requestXML += "    <Execute xmlns=\"schemas.microsoft.com/.../Services\" xmlns:i=\"www.w3.org/.../XMLSchema-instance\">";
    requestXML += "      <request xmlns:a=\"schemas.microsoft.com/.../Contracts\">";
    requestXML += "        <a:Parameters xmlns:b=\"schemas.datacontract.org/.../System.Collections.Generic\">";
    requestXML += "          <a:KeyValuePairOfstringanyType>";
    requestXML += "            <b:key>Target</b:key>";
    requestXML += "            <b:value i:type=\"a:EntityReference\">";
    requestXML += "              <a:Id>" + Guid + "</a:Id>";
    requestXML += "              <a:LogicalName>" + EntityLogicalName + "</a:LogicalName>";
    requestXML += "              <a:Name i:nil=\"true\" />";
    requestXML += "            </b:value>";
    requestXML += "          </a:KeyValuePairOfstringanyType>";
    requestXML += "        </a:Parameters>";
    requestXML += "        <a:RequestId i:nil=\"true\" />";
    requestXML += "        <a:RequestName>" + ActionName + "</a:RequestName>";
    requestXML += "      </request>";
    requestXML += "    </Execute>";
    requestXML += "  </s:Body>";
    requestXML += "</s:Envelope>";
	// Using Jquery. Asynch
    $.ajax(
    {
        type: "POST",
        contentType: "text/xml;charset=utf-8",
        datatype: "xml",
        url: Xrm.Page.context.getClientUrl() + "/XRMServices/2011/Organization.svc/web",
        data: requestXML,
        beforeSend: function (XMLHttpRequest) {
            XMLHttpRequest.setRequestHeader("Accept", "application/xml, text/xml, */*");
            XMLHttpRequest.setRequestHeader("SOAPAction", "schemas.microsoft.com/.../Execute");
			XMLHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
			XMLHttpRequest.setRequestHeader("Content-Length", requestXML.length);
        },
        success: function (data, textStatus, XmlHttpRequest) {
            console.log("Action call completed. ....");
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            console.log("Unable to call action....");
        }
    });
	// or use XMLHttpRequest directly.
	/*
        var req = new XMLHttpRequest();
        req.open("POST", Xrm.Page.context.getClientUrl() + "/XRMServices/2011/Organization.svc/web", false)
        req.setRequestHeader("Accept", "application/xml, text/xml, */*");
        req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
        req.setRequestHeader("Content-Length", requestXML.length);
        req.setRequestHeader("SOAPAction", "schemas.microsoft.com/.../Execute");
        req.send(requestXML);
	*/
}
And to call the above function:
ActionCall("bdf_AppelPluginDevis", Xrm.Page.data.entity.getId(), Xrm.Page.data.entity.getEntityName());