Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unsupported media type for xml php curl request

Tags:

php

soap

curl

xml

api

Here is my code I am using to connect to the Mind Body Online API. If ANYONE at all has any experience with this please point me in the right direction!

The error I am getting is :The server cannot service the request because the media type is unsupported.

Code:

$soapUrl = "http://clients.mindbodyonline.com/api/0_5/ClassService.asmx?WSDL";
// xml post structure

$xml_post_string = '<?xml version="1.0" encoding=\"utf-8\"?>
<soapenv:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Header/>
  <soapenv:Body>
     <GetClasses xmlns="http://clients.mindbodyonline.com/api/0_5/GetClasses">
        <Request>
           <SourceCredentials>
              <SourceName>{user}</SourceName>
              <Password>{pass}</Password>
              <SiteIDs>
                 <int>{id}</int>
              </SiteIDs>
           </SourceCredentials>
           <XMLDetail>Basic</XMLDetail>
           <PageSize>10</PageSize>
           <CurrentPageIndex>0</CurrentPageIndex>
           <SchedulingWindow>true</SchedulingWindow>
        </Request>
     </GetClasses>
  </soapenv:Body>
</soapenv:Envelope>
';

$headers = array(
    "Content-type: application/xml;charset=utf-8",
    "Accept: application/xml",
    "Cache-Control: no-cache",
    "Pragma: no-cache",
    "SOAPAction: http://clients.mindbodyonline.com/api/0_5/GetClasses",
    "Content-length: ".strlen($xml_post_string),
    );

$url = $soapUrl;
$cookiePath = tempnam('/tmp', 'cookie');

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiePath);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_post_string);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

// converting
$response = curl_exec($ch);
curl_close($ch);

echo $response;
like image 524
klye_g Avatar asked Jul 03 '12 02:07

klye_g


1 Answers

"Content-type: text/xml;charset=utf-8"
like image 102
Cheeso Avatar answered Sep 20 '22 20:09

Cheeso