promox: abfrge per curl funktioniert nicht

Ich versuche per curl folgende abfrage:

  
 $ch = curl_init();  
  
        // set url  
        curl_setopt($ch, CURLOPT_URL, "http://online-api.de/lizenzsystem/lizenzpruefungen.php?userid=123888&scriptkennung=DRV4-1001&url=reg.big-domain.eu&lang=de&operation=lizenzstatus");  
  
        //return the transfer as a string  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
		curl_setopt($ch, CURLOPT_HTTPHEADER, array ("Content-Type: text/xml; charset=utf-8"));  
  
#curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);  
        // $output contains the output string  
        $output = curl_exec($ch);  
		$scriptlizenz = simplexml_load_string($output);  
var_dump($output);  
        // close curl resource to free up system resources  
        curl_close($ch);  

hier bekomme ich immer null als ergebnis

wenn ich aber selben link im browser aufrufen
(http://online-api.de/lizenzsystem/lizenzpruefungen.php?userid=123888&scriptkennung=DRV4-1001&url=reg.big-domain.eu&lang=de&operation=lizenzstatus)

bekomme ich die richtige Ausgabe

kann mir jemand helfen und mal sagen was da falsch ist.

  1. kann mir jemand helfen und mal sagen was da falsch ist.

    Mir gibt das unveränderte(!) Skript folgendes aus:

    <RESPONSE>
       <LIZENZSTATUS>1</LIZENZSTATUS>
       <LIZENZVERSION>4.2.0</LIZENZVERSION>
       <SICHERHEITSUPDATE>0</SICHERHEITSUPDATE>
       </RESPONSE>

    Ist das Paket php-curl installiert? Eventuel hilft ein error_reporting(E_ALL) und/oder ein Blick in die Logfiles.

    Jörg Reinholz

    1. das ist richtig habe das mal auf anderen server getestet da geht es auch

      http://reg.big-domain.eu/kundencenter/test.php

      aber so wie es aussehen tut ist curl drauf
      oder sin da noch andere Einstellungen falsch mit sowas kenne ich mich nun gar nicht aus.

      vielen dank für ihre hilfe
      gruß richert, ralf

      1. Moin,

        aber so wie es aussehen tut ist curl drauf

        So, wie dus beschreiben tust, ist curl nicht drauf.

        error_reporting(E_ALL); mal probiert?

        Grüße Marco

        1. ich sehe das auch so

          error reporting hat garnix ausgegeben

          gruß
          richert

          1. Moin,

            error reporting hat garnix ausgegeben

            Hm. Vielleicht eine Beschränkung einer Firewall/Proxy? Entwickelst du lokal oder online?

            Grüße Marco

        2. Tach!

          So, wie dus beschreiben tust, ist curl nicht drauf.

          Dieser These widerspricht, dass nicht bereits curl_init() fehlschlägt, denn auch das nutzt Funtionen der curl-Bibliothek.

          dedlfix.

      2. Versuche doch mal die Adresse http://online-api.de/lizenzsystem/lizenzpruefungen.php?userid=123888&scriptkennung=DRV4-1001&url=reg.big-domain.eu&lang=de&operation=lizenzstatus von dem System aus, auf dem auch Dein PHP-Skript läuft, mit wget abzuholen. (z.B. via ssh-Konsole)

        Mich interessieren die Rückgaben von:

        wget -d -O - "http://online-api.de/lizenzsystem/lizenzpruefungen.php?userid=123888&scriptkennung=DRV4-1001&url=reg.big-domain.eu&lang=de&operation=lizenzstatus"

        Mich interessieren die Header (sehen diese dem Ergebnis mit meinen Netztool ähnlich?) und natürlich will ich auch wissen, ob vom Server das XML gesendet wurde.

        Jörg Reinholz

  2. Tach!

    kann mir jemand helfen und mal sagen was da falsch ist.

    Ich kann kein Problem nachvollziehen.

    hier bekomme ich immer null als ergebnis

    Das passiert bei mir nicht. Stattdessen kommt da XML.

      curl\_setopt($ch, CURLOPT\_HTTPHEADER, array ("Content-Type: text/xml; charset=utf-8"));  
    

    Diese Zeile ist überflüssig. Du machst einen GET-Request, bei dem es keinen Content gibt. Und für den muss kein Content-Type definiert werden.

    wenn ich aber selben link im browser aufrufen
    bekomme ich die richtige Ausgabe

    Manchmal sind die Server etwas eigensinnig, wenn denen ein Request zugestellt wird, der zwar technisch in Ordnung ist, dem aber irgendeine Header-Zeile fehlt, die Browser normalerweise mitsenden (z.B. User-Agent). Aber das scheint hier nicht der Fall zu sein, weil es prinzipiell geht.

    Vielleicht hast du ein Problem, mit einem Zwangsproxy. Der Browser kennt und nutzt ihn, dein Curl natürlich nicht ohne weiteres.

    dedlfix.