0 votes
1 view
in Salesforce by (11.9k points)

I am trying to connect to the SalesForce.com bulk API so I can do mass uploads of data from my application. I have read through the PDF documentation which emphasizes using CURL to make the POST requests. In keeping with the instructions, I have created a text file in XML format which is used for logging into the server.

Login.txt contents below:

<?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>my username</n1:username>

         <n1:password>my password</n1:password>

     </n1:login>

     </env:Body>

</env:Envelope>

Here is what I'm trying to do in my code to make the login request:

XmlDocument XMLResponse = null;
HttpWebRequest httpRequest;
HttpWebResponse httpResponse = null;
Stream requestStream = null;
Stream responseStream = null;
XmlTextReader xmlReader;
httpRequest = HttpWebRequest)WebRequest.Create("https://login.salesforce.com/services/Soap/c/20.0");
try
{
            byte[] bytes = File.ReadAllBytes(filename);
            httpRequest.Method = "POST";
            httpRequest.ContentLength = bytes.Length;
            httpRequest.ContentType = "text/xml; charset=UTF-8";
            httpRequest.Headers.Add("SOAPAction: login");
            requestStream = httpRequest.GetRequestStream();
            requestStream.Write(bytes, 0, bytes.Length);
            requestStream.Close();
            httpResponse = (HttpWebResponse)httpRequest.GetResponse();
            if (httpResponse.StatusCode == HttpStatusCode.OK)
            {
                responseStream = httpResponse.GetResponseStream();
                xmlReader = new XmlTextReader(responseStream);
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.Load(xmlReader);
                XMLResponse = xmldoc;
                xmlReader.Close();
            }
            httpResponse.Close();
}

When this code executes I always get a 500 error. Does anyone have any experience in doing what I am attempting to do? Could you please provide me with some suggestions?

Thank you in advance.

1 Answer

0 votes
by (31k points)
edited by
To solve your login problem, just download and import the partner WSDL and use the generated web service client.

Or else, you'll have to update your code to read the response when it gets a 500 status code, the response body will give you more clues to the problem.

I'd assume in this case you're getting an identity confirmation error, and you'll want to provide your API security token in addition to your password in the login request.

Related questions

0 votes
1 answer
+1 vote
1 answer
0 votes
1 answer
Welcome to Intellipaat Community. Get your technical queries answered by top developers !


Categories

...