Sonja: Proxy - Simplexml

Hallo,

folgendes Problem stellt sich mir. Um mit meinem WinXP Testrechner das Internet nutzen zu können, muss ich einen Proxy in den Browser eintragen. Nutze ich auf dem gleichen Rechner PHP läuft das einwandfrei, bis ich Inhalte aus dem Internet holen möchte.
Denn SimpleXML kann ohne den Proxy zu kennen natürlich nicht mit dem Internet verbinden. In der Doku habe ich dazu jetzt keine Hinweise auf die Nutzung von Proxys bei SimpleXML gefunden.

Wie genau bringe ich also PHP bei das bei Internetabfragen ein Proxy zu benutzen ist?

Danke für eure Hilfe

Sonja

  1. Tach!

    Denn SimpleXML kann ohne den Proxy zu kennen natürlich nicht mit dem Internet verbinden. In der Doku habe ich dazu jetzt keine Hinweise auf die Nutzung von Proxys bei SimpleXML gefunden.

    Wenn eine der File-Funktionen einen Internetzugriff machen möchte, kann man Parameter dazu über den Streams-Kontext mitgeben. simplexml_load_file() fehlt ein solcher Parameter.

    Wie genau bringe ich also PHP bei das bei Internetabfragen ein Proxy zu benutzen ist?

    Eine generelle Proxy-Konfigurationsdirektive ist mir nicht bekannt. Als Alternative kannst du file_get_contents() mit dem Kontext-Parameter nutzen und das Ergebnis über simplexml_load_string() weiterverarbeiten.

    dedlfix.

    1. Eine generelle Proxy-Konfigurationsdirektive ist mir nicht bekannt. Als Alternative kannst du file_get_contents() mit dem Kontext-Parameter nutzen und das Ergebnis über simplexml_load_string() weiterverarbeiten.

      Falsch, ich hatte das Problem vor einer Woche, das hier ist die Lösung und sie
      funktioniert:

      // Proxy settings to avoid crash by heidelberg-proxy
      $auth = base64_encode('username:pass');
      $header = array("Authorization: Basic $auth");
      $Proxy = 'proxy.krz.uni-heidelberg.de:8080';
      $r_default_context = stream_context_get_default(array('http' => array('proxy' => $Proxy,'request_fulluri' => True,'header' => $header,),));
      libxml_set_streams_context($r_default_context);

      1. Tach!

        Eine generelle Proxy-Konfigurationsdirektive ist mir nicht bekannt. Als Alternative kannst du file_get_contents() mit dem Kontext-Parameter nutzen und das Ergebnis über simplexml_load_string() weiterverarbeiten.
        Falsch, ich hatte das Problem vor einer Woche, das hier ist die Lösung und sie funktioniert:

        Was ist daran falsch? Eine generelle Proxy-Direktive gibt es nicht. Die alternative Lösung funktioniert auch und ist im Wesentlichen genau das, was du da machst. Nur dass du den Streams-Kontext direkt dem unter dem SimpleXML werkelnden libxml übergibst.

        dedlfix.

        1. Ah, hatte deinen Text zu schnell gelesen, dachte du hast geschrieben es wäre nicht möglich oder dir sei nicht bekannt, dass so etwas möglich sei. Weswegen ich dann den 4Zeiler da gepostet habe.

          1. Hallo,

            ich habe die Snoopyclass gefunden, die kann genau soetwas...

            Vielen Dank
             Sonja

  2. Hallo,

    Denn SimpleXML kann ohne den Proxy zu kennen natürlich nicht mit dem Internet verbinden. In der Doku habe ich dazu jetzt keine Hinweise auf die Nutzung von Proxys bei SimpleXML gefunden.

    siehe z.B. diesen Nutzerkommentar zu simplexml_load_file, da steht die von Sebastian erwähnte Methode.

    Freundliche Grüße

    Vinzenz