We need to post an .xml file to an API - REST API - BigCommerce.
It's a relatively basic api..
We have tried this php curl script posting the xml file to the API however no luck.
<?php
// test XML API POST
$filename = "test.xml";
$handle = fopen($filename, "r");
$XPost = fread($handle, filesize($filename));
fclose($handle);
$url = "https://urlofapi"; // set REST URL
$api_token = "apihashkey";
$xml = urlencode($XPost);
$user_agent = "SoEasy REST API Client 0.1";
// Get the curl session object
$session = curl_init($url);
// set url to post to curl_setopt($session, CURLOPT_URL,$url);
curl_setopt($session, CURLOPT_POST, true); // Tell curl to use HTTP POST;
curl_setopt($session, CURLOPT_POSTFIELDS, $XPost); // Tell curl that this is the body of the POST
curl_setopt($session, CURLOPT_USERPWD, $api_token); // define userpassword api token
curl_setopt($session, CURLOPT_HTTPAUTH, CURLAUTH_ANY); // defining REST basic authentication
curl_setopt($session, CURLOPT_HTTPHEADER, Array("Content-Type: application/xml")); // define header
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false); // ignore ssl cert for debug purposes curl_setopt($session, CURLOPT_USERAGENT, $user_agent); // user agent so the api knows what for some unknown reason
curl_setopt($session, CURLOPT_HEADER, 1); // Tell curl not to return headers, but do return the response
curl_setopt($session, CURLOPT_RETURNTRANSFER, true); // allow redirects curl_setopt($session, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($session);
print_r($response);
curl_close($session);
?>
This has so far connected, but not successfully - an error occurs -
Warning: fread() [function.fread]: Length parameter must be greater than 0 in /home/user/public_html/test/new.php on line 7
HTTP/1.1 405 Method Not Allowed Date: Sun, 12 Aug 2012 07:31:11 GMT
Server: Apache Allow: GET, HEAD, OPTIONS
X-BC-ApiLimit-Remaining: 5000 X-BC-Store-Version: 7.3.37
X-Powered-By: PleskLin Transfer-Encoding: chunked Content-Type: application/xml
X-Pad: avoid browser bug 405 This resource does not support the requested method.
Refer to the Allow response header for methods supported by this resource.
All we need to simply do is post a .xml file to the big commerce API. The .xml is coming from account software and produces the correct xml.