Unsupported media type for xml php curl request

15,090
"Content-type: text/xml;charset=utf-8"
Share:
15,090
klye_g
Author by

klye_g

Updated on July 02, 2022

Comments

  • klye_g
    klye_g almost 2 years

    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;