Back to Collection Items
#include <C_CkHttp.h>
#include <C_CkXml.h>
#include <C_CkStringBuilder.h>
#include <C_CkHttpResponse.h>
void ChilkatSample(void)
{
HCkHttp http;
BOOL success;
HCkXml xml;
HCkStringBuilder sbRequestBody;
HCkHttpResponse resp;
HCkStringBuilder sbResponseBody;
HCkXml xmlResponse;
const char *soapenv_Envelope_xmlns_soapenv;
const char *soapenv_Envelope_xmlns;
const char *soapenv_Envelope_xmlns_xsi;
const char *metadataServerUrl;
const char *passwordExpired;
const char *sandbox;
const char *serverUrl;
const char *sessionId;
const char *userId;
const char *accessibilityMode;
const char *chatterExternal;
const char *currencySymbol;
int orgAttachmentFileSizeLimit;
const char *orgDefaultCurrencyIsoCode;
const char *orgDefaultCurrencyLocale;
const char *orgDisallowHtmlAttachments;
const char *orgHasPersonAccounts;
const char *organizationId;
const char *organizationMultiCurrency;
const char *organizationName;
const char *profileId;
const char *roleId_xsi_nil;
int sessionSecondsValid;
const char *userDefaultCurrencyIsoCode_xsi_nil;
const char *userEmail;
const char *userFullName;
const char *userLanguage;
const char *userLocale;
const char *userName;
const char *userTimeZone;
const char *userType;
const char *userUiSkin;
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
http = CkHttp_Create();
// Use this online tool to generate code from sample XML: Generate Code to Create XML
// The following XML is sent in the request body.
// <?xml version="1.0" encoding="utf-8"?>
// <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
// <env:Body>
// <n1:login xmlns:n1="urn:partner.soap.sforce.com">
// <n1:username><![CDATA[{{username}}]]></n1:username>
// <n1:password><![CDATA[{{password}}{{secretToken}}]]></n1:password>
// </n1:login>
// </env:Body>
// </env:Envelope>
//
xml = CkXml_Create();
CkXml_putTag(xml,"env:Envelope");
CkXml_AddAttribute(xml,"xmlns:xsd","http://www.w3.org/2001/XMLSchema");
CkXml_AddAttribute(xml,"xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance");
CkXml_AddAttribute(xml,"xmlns:env","http://schemas.xmlsoap.org/soap/envelope/");
CkXml_UpdateAttrAt(xml,"env:Body|n1:login",TRUE,"xmlns:n1","urn:partner.soap.sforce.com");
CkXml_UpdateChildContent(xml,"env:Body|n1:login|n1:username","{{username}}");
CkXml_UpdateChildContent(xml,"env:Body|n1:login|n1:password","{{password}}{{secretToken}}");
CkHttp_SetRequestHeader(http,"Content-Type","text/xml; charset=UTF-8");
CkHttp_SetRequestHeader(http,"SOAPAction","login");
CkHttp_SetRequestHeader(http,"Accept","text/xml");
sbRequestBody = CkStringBuilder_Create();
CkXml_GetXmlSb(xml,sbRequestBody);
resp = CkHttpResponse_Create();
success = CkHttp_HttpSb(http,"POST","https://login.salesforce.com{{site}}/services/Soap/u/{{version}}",sbRequestBody,"utf-8","text/xml; charset=UTF-8",resp);
if (success == FALSE) {
printf("%s\n",CkHttp_lastErrorText(http));
CkHttp_Dispose(http);
CkXml_Dispose(xml);
CkStringBuilder_Dispose(sbRequestBody);
CkHttpResponse_Dispose(resp);
return;
}
sbResponseBody = CkStringBuilder_Create();
CkHttpResponse_GetBodySb(resp,sbResponseBody);
xmlResponse = CkXml_Create();
CkXml_LoadSb(xmlResponse,sbResponseBody,TRUE);
printf("%s\n",CkXml_getXml(xmlResponse));
// Sample XML response:
// (Sample code for parsing the XML response is shown below)
// <?xml version="1.0" encoding="UTF-8"?>
// <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:partner.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
// <soapenv:Body>
// <loginResponse>
// <result>
// <metadataServerUrl>https://pozil-dev-ed.my.salesforce.com/services/Soap/m/50.0/00D58000000arpq</metadataServerUrl>
// <passwordExpired>false</passwordExpired>
// <sandbox>false</sandbox>
// <serverUrl>https://pozil-dev-ed.my.salesforce.com/services/Soap/u/50.0/00D58000000arpq</serverUrl>
// <sessionId>SECRET_SESSION_ID_GOES_HERE</sessionId>
// <userId>00558000000yFyDAAU</userId>
// <userInfo>
// <accessibilityMode>false</accessibilityMode>
// <chatterExternal>false</chatterExternal>
// <currencySymbol>€</currencySymbol>
// <orgAttachmentFileSizeLimit>26214400</orgAttachmentFileSizeLimit>
// <orgDefaultCurrencyIsoCode>EUR</orgDefaultCurrencyIsoCode>
// <orgDefaultCurrencyLocale>fr_FR_EURO</orgDefaultCurrencyLocale>
// <orgDisallowHtmlAttachments>false</orgDisallowHtmlAttachments>
// <orgHasPersonAccounts>false</orgHasPersonAccounts>
// <organizationId>00D58000000arpqEAA</organizationId>
// <organizationMultiCurrency>false</organizationMultiCurrency>
// <organizationName>pozil DE</organizationName>
// <profileId>00e58000000wYTOAA2</profileId>
// <roleId xsi:nil="true"/>
// <sessionSecondsValid>7200</sessionSecondsValid>
// <userDefaultCurrencyIsoCode xsi:nil="true"/>
// <userEmail>demo@pozil.org</userEmail>
// <userFullName>Philippe Ozil</userFullName>
// <userId>00558000000yFyDAAU</userId>
// <userLanguage>en_US</userLanguage>
// <userLocale>fr_FR</userLocale>
// <userName>demo@pozil.org</userName>
// <userTimeZone>Europe/Paris</userTimeZone>
// <userType>Standard</userType>
// <userUiSkin>Theme3</userUiSkin>
// </userInfo>
// </result>
// </loginResponse>
// </soapenv:Body>
// </soapenv:Envelope>
// Sample code for parsing the XML response...
// Use this online tool to generate parsing code from sample XML: Generate XML Parsing Code
// Chilkat functions returning "const char *" return a pointer to temporary internal memory owned and managed by Chilkat.
soapenv_Envelope_xmlns_soapenv = CkXml_getAttrValue(xmlResponse,"xmlns:soapenv");
soapenv_Envelope_xmlns = CkXml_getAttrValue(xmlResponse,"xmlns");
soapenv_Envelope_xmlns_xsi = CkXml_getAttrValue(xmlResponse,"xmlns:xsi");
metadataServerUrl = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|metadataServerUrl");
passwordExpired = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|passwordExpired");
sandbox = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|sandbox");
serverUrl = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|serverUrl");
sessionId = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|sessionId");
userId = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userId");
accessibilityMode = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|accessibilityMode");
chatterExternal = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|chatterExternal");
currencySymbol = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|currencySymbol");
orgAttachmentFileSizeLimit = CkXml_GetChildIntValue(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|orgAttachmentFileSizeLimit");
orgDefaultCurrencyIsoCode = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|orgDefaultCurrencyIsoCode");
orgDefaultCurrencyLocale = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|orgDefaultCurrencyLocale");
orgDisallowHtmlAttachments = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|orgDisallowHtmlAttachments");
orgHasPersonAccounts = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|orgHasPersonAccounts");
organizationId = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|organizationId");
organizationMultiCurrency = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|organizationMultiCurrency");
organizationName = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|organizationName");
profileId = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|profileId");
roleId_xsi_nil = CkXml_chilkatPath(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|roleId|(xsi:nil)");
sessionSecondsValid = CkXml_GetChildIntValue(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|sessionSecondsValid");
userDefaultCurrencyIsoCode_xsi_nil = CkXml_chilkatPath(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|userDefaultCurrencyIsoCode|(xsi:nil)");
userEmail = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|userEmail");
userFullName = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|userFullName");
userId = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|userId");
userLanguage = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|userLanguage");
userLocale = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|userLocale");
userName = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|userName");
userTimeZone = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|userTimeZone");
userType = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|userType");
userUiSkin = CkXml_getChildContent(xmlResponse,"soapenv:Body|loginResponse|result|userInfo|userUiSkin");
CkHttp_Dispose(http);
CkXml_Dispose(xml);
CkStringBuilder_Dispose(sbRequestBody);
CkHttpResponse_Dispose(resp);
CkStringBuilder_Dispose(sbResponseBody);
CkXml_Dispose(xmlResponse);
}
Curl Command
curl -X POST
-H "Content-Type: text/xml; charset=UTF-8"
-H "SOAPAction: login"
-H "Accept: text/xml"
-d '<?xml version="1.0" encoding="utf-8" ?>
<env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<n1:login xmlns:n1="urn:partner.soap.sforce.com">
<n1:username><![CDATA[{{username}}]]></n1:username>
<n1:password><![CDATA[{{password}}{{secretToken}}]]></n1:password>
</n1:login>
</env:Body>
</env:Envelope>'
https://login.salesforce.com{{site}}/services/Soap/u/{{version}}
Postman Collection Item JSON
{
"name": "SOAP Login",
"event": [
{
"listen": "test",
"script": {
"exec": [
"const result = xml2Json(pm.response.text())[\"soapenv:Envelope\"][\"soapenv:Body\"].loginResponse.result;",
"const url = result.serverUrl.split(\"/\");",
"",
"const context = pm.environment.name ? pm.environment : pm.collectionVariables;",
"context.set(\"_accessToken\", result.sessionId);",
"context.set(\"_endpoint\", url[0] + \"//\" + url[2]);",
"context.set(\"_userId\", result.userId);",
"context.set(\"_orgId\", result.userInfo.organizationId);"
],
"type": "text/javascript"
}
}
],
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "text/xml; charset=UTF-8",
"type": "text"
},
{
"key": "SOAPAction",
"value": "login",
"type": "text"
},
{
"key": "Accept",
"value": "text/xml",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<env:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\">\n <env:Body>\n <n1:login xmlns:n1=\"urn:partner.soap.sforce.com\">\n <n1:username><![CDATA[{{username}}]]></n1:username>\n <n1:password><![CDATA[{{password}}{{secretToken}}]]></n1:password>\n </n1:login>\n </env:Body>\n</env:Envelope>"
},
"url": {
"raw": "{{url}}{{site}}/services/Soap/u/{{version}}",
"host": [
"{{url}}{{site}}"
],
"path": [
"services",
"Soap",
"u",
"{{version}}"
]
},
"description": "Logs in to the login server and starts a client session.\n\nMake sure to set the `url`, `username`, `password` and `secretToken` environment variables before sending this request.\nOn success, the request will automatically collect your authentication token for later use."
},
"response": [
{
"name": "Successful SOAP Login",
"originalRequest": {
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "text/xml",
"type": "text"
},
{
"key": "SOAPAction",
"value": "login",
"type": "text"
},
{
"key": "charset",
"value": "UTF-8",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n<env:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\">\n <env:Body>\n <n1:login xmlns:n1=\"urn:partner.soap.sforce.com\">\n <n1:username>demo@pozil.org</n1:username>\n <n1:password>PASSWORD_GOES_HERE</n1:password>\n </n1:login>\n </env:Body>\n</env:Envelope>"
},
"url": {
"raw": "https://login.salesforce.com/services/Soap/u/50.0",
"protocol": "https",
"host": [
"login",
"salesforce",
"com"
],
"path": [
"services",
"Soap",
"u",
"50.0"
]
}
},
"status": "OK",
"code": 200,
"_postman_previewlanguage": "xml",
"header": [
{
"key": "Date",
"value": "Wed, 06 Jan 2021 12:47:25 GMT"
},
{
"key": "X-B3-TraceId",
"value": "facd9cec92dd7211"
},
{
"key": "X-B3-SpanId",
"value": "facd9cec92dd7211"
},
{
"key": "X-B3-Sampled",
"value": "0"
},
{
"key": "Cache-Control",
"value": "no-cache,must-revalidate,max-age=0,no-store,private"
},
{
"key": "Content-Type",
"value": "text/xml; charset=utf-8"
},
{
"key": "Vary",
"value": "Accept-Encoding"
},
{
"key": "Content-Encoding",
"value": "gzip"
},
{
"key": "Transfer-Encoding",
"value": "chunked"
}
],
"cookie": [
],
"body": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns=\"urn:partner.soap.sforce.com\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n <soapenv:Body>\n <loginResponse>\n <result>\n <metadataServerUrl>https://pozil-dev-ed.my.salesforce.com/services/Soap/m/50.0/00D58000000arpq</metadataServerUrl>\n <passwordExpired>false</passwordExpired>\n <sandbox>false</sandbox>\n <serverUrl>https://pozil-dev-ed.my.salesforce.com/services/Soap/u/50.0/00D58000000arpq</serverUrl>\n <sessionId>SECRET_SESSION_ID_GOES_HERE</sessionId>\n <userId>00558000000yFyDAAU</userId>\n <userInfo>\n <accessibilityMode>false</accessibilityMode>\n <chatterExternal>false</chatterExternal>\n <currencySymbol>€</currencySymbol>\n <orgAttachmentFileSizeLimit>26214400</orgAttachmentFileSizeLimit>\n <orgDefaultCurrencyIsoCode>EUR</orgDefaultCurrencyIsoCode>\n <orgDefaultCurrencyLocale>fr_FR_EURO</orgDefaultCurrencyLocale>\n <orgDisallowHtmlAttachments>false</orgDisallowHtmlAttachments>\n <orgHasPersonAccounts>false</orgHasPersonAccounts>\n <organizationId>00D58000000arpqEAA</organizationId>\n <organizationMultiCurrency>false</organizationMultiCurrency>\n <organizationName>pozil DE</organizationName>\n <profileId>00e58000000wYTOAA2</profileId>\n <roleId xsi:nil=\"true\"/>\n <sessionSecondsValid>7200</sessionSecondsValid>\n <userDefaultCurrencyIsoCode xsi:nil=\"true\"/>\n <userEmail>demo@pozil.org</userEmail>\n <userFullName>Philippe Ozil</userFullName>\n <userId>00558000000yFyDAAU</userId>\n <userLanguage>en_US</userLanguage>\n <userLocale>fr_FR</userLocale>\n <userName>demo@pozil.org</userName>\n <userTimeZone>Europe/Paris</userTimeZone>\n <userType>Standard</userType>\n <userUiSkin>Theme3</userUiSkin>\n </userInfo>\n </result>\n </loginResponse>\n </soapenv:Body>\n</soapenv:Envelope>"
}
]
}