The Partner API SOAP method convertLead() is at its core an HTTP POST request where the Body is XML that conforms to to the WSDL.
There is nothing stopping you from building up that XML string and posting it to the required URL (including the required SessionId). If you need you can even parse the XML response.
I don't want to get into the differences between SOAP and REST (follow the link for that). However, if you can call the Salesforce REST API using an HTTP POST you can coerce a call to the SOAP message.
Sample SOAP body for the HTTP POST request:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:partner.soap.sforce.com">
<soapenv:Header>
<urn:SessionHeader>
<urn:sessionId>00D700000000001!AQoAQGgd1SXiXR.NotARealSessionId.xNJ7GZonoQ7yusRoGbHhJl5sZ_IbggO6uik7f</urn:sessionId>
</urn:SessionHeader>
</soapenv:Header>
<soapenv:Body>
<urn:convertLead>
<urn:leadConverts>
<urn:convertedStatus>Closed - Converted</urn:convertedStatus>
<urn:leadId>00Q00000000001</urn:leadId>
</urn:leadConverts>
</urn:convertLead>
</soapenv:Body>
</soapenv:Envelope>
This should be POSTed to https://instance.salesforce.com/services/Soap/u/33.0. You will need to replace instance with your pod identifier. It will be something like na5.
look for it in the URL sub domain when you login to Salesforce. It will be the same domain that you send the REST API requests to.
The sessionId will, in most cases, be interchangeable with the access_token used in the Authorization: Bearer
header with the REST API.
So you should already have most of the details you require.
- Create the URL to POST to based on the REST API URL domain. Send it to
/services/Soap/u/33.0
to get the SOAP Partner API.
- Take the access_token you already have to use as the sessionId.
- Build up a string to be the SOAP XML body. Put your sessionId between the
<urn:sessionId>
XML tags. Put your leadId between the <urn:leadId>
tags.
- POST the string to the URL your created in Step 1.