You need to sign in to do that
Don't have an account?
Using Workbench for Bulk API with a proxy server
Hi all, I've been using Workbench (http://wiki.developerforce.com/index.php/Workbench) and I'm annoyed I haven't used it before now - it's an awesome tool!! Quite possibly the most awesome part of it in v3.0.19 is the access to the Bulk API, which is also an amazing new feature in v19 of the API - if you haven't used it yet then you definitely should - allowing parallel processing of data is such a time-saver!
There are a couple of things you'll need to do in order to get the Bulk API working via Workbench, which I've been doing over the course of my Friday afternoon, and to save someone else the time, I'm documenting them here:
1. If you're using something like XAMPP to run Workbench locally, then you'll need to enable cURL support. This is pretty straight forward - XAMPP has very kindly packaged cURL libraries with the distribution, but you need to enable it, so
- find your php.ini (in %XAMPP%\php directory, where %XAMPP% is where you've installed XAMPP (the base dir)
- open it in your favourite text editor
- search for 'extension=php_curl' and you should get a line that's commented out
- uncomment the line and save
- restart Apache
Hey presto! cURL should now be working (check the phpinfo() page to confirm) and Bulk API will work.
If you're not using a proxy server you can stop now. If you are, read on...
2. The cURL call in the Bulk API php file doesn't support a proxy server, so if you're using one you'll have to add the lines manually.
- Find the file 'BulkAPIClient.php' - this will be in %XAMPP%\htdocs\workbench\restclient
- Open in a text editor
- go to line 173 if you're using v3.0.19 of Workbench. There you'll see the start of a lot of curl_setopt calls - these set the options for when cURL is called.
- You need to add 2 more lines at the end of this curl_setopt section - one for proxy host and one for proxy port.
eg. before I changed my code it looked like this:
if($isPost) curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeaders);
if($isPost) curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //TODO: use ca-bundle instead
if($this->compressionEnabled) curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //TODO: add outbound compression support
After I changed it looked like this:
if($isPost) curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $httpHeaders);
if($isPost) curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //TODO: use ca-bundle instead
if($this->compressionEnabled) curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //TODO: add outbound compression support
curl_setopt($ch, CURLOPT_PROXYPORT, "80");
curl_setopt($ch, CURLOPT_PROXY, "proxy.internal");
If you need authentication for your proxy then add another line using the option CURLOPT_PROXYUSERPWD and the user/pass in the format "username:password"
Then save the php file and you should be good to go!
Enjoy,
Stephen