cURL-Problem

Hat zwar nur indirekt mit OXID zu tun, aber da ja einige Profis hier sind, versuche ich mal mein Glück…

Ich versuche mit cURL eine Online-Bestandsabfrage zu realisieren.

Letzten Endes bedeutet das einen POST von XML-Daten an einen (passswortgeschützten) Server.

Die Verbindung selbst scheint zu funktionieren, nur retourniert mit der Server nicht die erwarteten Informationen…

Folgende Routine verwende ich für die Kommunikation:

function httpsPost($Url, $strRequest,$logit=true)
{
  if ($logit)
  {
    $fh=fopen(strtolower(ONLINE_STOCK_REQUEST_PROVIDER).'-log.txt','a');
    if ($fh)
    {
      $two_newline=PHP_EOL.PHP_EOL;
      fwrite($fh,'***** '.date('d.m.Y, H:i:s').' Message sent to '.ONLINE_STOCK_REQUEST_URL.$two_newline);
      fwrite($fh,$strRequest.$two_newline);
    }
  }
// Initialisation
  $ch=curl_init();
  if ($ch)
  {
    // Set parameters
    $options = array(
      CURLOPT_URL            => $Url,
      CURLOPT_RETURNTRANSFER => true,         // return web page
      CURLOPT_HEADER         => false,        // don't return headers
      CURLOPT_FOLLOWLOCATION => true,         // follow redirects
      CURLOPT_ENCODING       => "",           // handle all encodings
      CURLOPT_USERAGENT      => "xxxxxxxxx",  // who am i
      CURLOPT_USERPWD        =>  ONLINE_STOCK_REQUEST_CREDENTIALS,   //Login data
      CURLOPT_AUTOREFERER    => true,         // set referer on redirect
      CURLOPT_CONNECTTIMEOUT => 60,          // timeout on connect
      CURLOPT_TIMEOUT        => 60,          // timeout on response
      CURLOPT_MAXREDIRS      => 10,           // stop after 10 redirects
      CURLOPT_POST           => 1,            // i am sending post data
      CURLOPT_POSTFIELDS     => 'post_data='.urlencode($strRequest), // this are my post vars
      CURLINFO_CONTENT_TYPE  => 'text/text',
      CURLOPT_SSL_VERIFYHOST => 0,            // don't verify ssl
      CURLOPT_SSL_VERIFYPEER => false,        //
      CURLOPT_VERBOSE        => 1                //
    ); 
    curl_setopt_array($ch,$options); 
    // execute the connexion
    $response = curl_exec($ch);
    // Close it
// Check if any error occured
    if (curl_errno($ch))
    {
      if ($fh)
      {
        fwrite($fh,$two_newline.'cURL error! ('.curl_error ($ch).RPAREN.$two_newline);
      }
    }
    else
    {
      $xfer_info='';
      $info = curl_getinfo($ch);
      foreach ($info as $key=>$val)
      {
        $xfer_info.=PHP_EOL.$key.EQUAL.$val;
      }
      if ($fh)
      {
        fwrite($fh,$two_newline.'*** cURL transfer info'.$two_newline);
        fwrite($fh,$xfer_info.$two_newline);
      }
      else
      {
        echo $xfer_info;
      }
    }    
    curl_close($ch);
  }
  else
  {
    $res='Failed to establish communication to "'.ONLINE_STOCK_REQUEST_PROVIDER.QUOTE.COLON_BLANK.$errstr;
    if ($fh)
    {
      fwrite($fh,$two_newline.$res.$two_newline);
    }
  }
  if ($response)
  {
    if ($fh)
    {
      fwrite($fh,$two_newline.'Answer received from remote service'.$two_newline.$response.$two_newline);
      fwrite($fh,str_repeat('=',150).$two_newline);
    }
  }  
  if ($fh)
  {
    fclose($fh);
  }
  return $response;
} 

Ich habe mir mit “curl_getinfo” die Transfer-Statistiken anzeigen lassen:

url=https://de.ep-es.com/stock_v1/atde/content.php
content_type=text/html; charset=UTF-8
http_code=200
header_size=208
request_size=289
filetime=-1
ssl_verify_result=20
redirect_count=0
total_time=0.325
namelookup_time=0.001
connect_time=0.037
pretransfer_time=0.176
size_upload=0
size_download=103
speed_download=316
speed_upload=0
download_content_length=103
upload_content_length=0
starttransfer_time=0.325
redirect_time=0
Was dabei auffällt ist, dass sowohl “size_upload”, als auch “upload_content_length” den Wert 0 haben, anscheinend also keine Daten zum Server übertragen werden, obwohl in “$strRequest” definitiv Daten enthalten sind.

Hat jemand eine Idee, was das Problem sein könnte?