At present, ForeignSysID is never returned in getLead or getMultipleLeads operations, so you cannot read this value through the API
You can set those ForeignSys field values with a syncLead, and you can then reference leads with that stored ForeignSysID.
It is likely there is nothing wrong with your syncLead call. I would suggest inspecting the XML response. It will return <status>CREATED</status>.
The XML response looks like that:
<ns1:successSyncLead>
<result>
<leadId>5559</leadId>
<syncStatus>
<leadId>5559</leadId>
<status>CREATED</status>
<error xsi:nil="true"/>
</syncStatus>
<leadRecord xsi:nil="true"/>
</result>
</ns1:successSyncLead>
In summary ForeignSysID will not be returned by getLead or getMultipleLeads regardless syncLead was successful or not. It is a known limitation being addressed in future releases of SOAP API (no timeline set for that yet). Please check the XML response to find whether the lead was created.