XML - Schnittstelle über HTTPS-POST

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XML - Schnittstelle über HTTPS-POST

    Hallo.
    Ich hab das ganze Netz durchsucht, aber leider keine Antwort auf meine Frage gefunden:

    Wie kann ich eine Anfrage über HTTPS-POST senden?
    Folgendes soll in die Abfrage:
    die URL (http://www.mein-server.de/schnittstelle.asp)
    Die Schnittstelle benötigt einen Request in folgenderFrom
    PHP-Code:
    <?xml version=“1.0“ encoding=“iso-8859-1“ ?>
    <DATA>
    <ACCOUNT>
    <ACTION>GetShipping</ACTION>
    <PARTNERID>123456</PARTNERID>
    <PARTNERPASS>abc123</PARTNERPASS>
    <USERID>user</USERID>
    <USERPASS>123abc</USERPASS>
    </ACCOUNT>
    <PRODUCTS>
    <PRODUCT>
    <PRODUCT_ID>2131234</PRODUCT_ID>
    </PRODUCT>
    ... weitere Produkte
    </PRODUCTS>
    </DATA>
    Die Response lautet dann wie folgt:
    PHP-Code:
    <?xml version="1.0" ?>
    <DATA>
    <PRODUCTS>
    <PRODUCT>
    <1_QUANTITY>10</1_QUANTITY>
    <2_QUANTITY>23</2_QUANTITY>
    <PRODUCT_NAME1>XML Test Produkt</PRODUCT_NAME1>
    <PRODUCT_NR>3123142</PRODUCT_NR>
    <PRODUCT_ID>123577</PRODUCT_ID>
    <AVAILABLE>9</AVAILABLE>
    </PRODUCT>
    ... weitere Produkte
    </PRODUCTS>
    </DATA>
    Ich möchte, dass die Response als XML-Datei gespeichert wird und dass die Request aus einer XML-Datei aufgerufen wird.
    Weitere Angaben habe ich leider nicht vom Anbieter der Schnittstelle bekommen.
    Das ganze soll natürlich in einem php-file ablaufen.

    Wie gesagt, ich suche jetzt schon tagelang im Netz und finde einfach keine Lösung.
    Wenn mir jemand helfen könnten wäre ich SEHR Dankbar.

    Gruß
    Gerrit
    Zuletzt geändert von hrttoz; 03.01.2006, 00:41.

  • #2
    schlecht gesucht?
    http://www.php-resource.de/forum/sho...d/t-55684.html
    http://www.php-faq.de/q/q-code-post.html (allgemeiner, aber inhaltlich wertvoller. man muss schon wissen, was man da macht.)

    Kommentar


    • #3
      Hallo und danke für die Antwort. Die beiden Beiträge habe ich zwar gefunden, komme aber einfach nicht klar damit.
      Mein Skript sieht wie folgt aus:

      PHP-Code:


      <?php

      function PostToHost($host$path$referer$data_to_send) {
        
      $fp fsockopen($host80);
        
      printf("Open!\n");
        
      fputs($fp"POST $path HTTP/1.1\r\n");
        
      fputs($fp"Host: $host\r\n");
        
      fputs($fp"Referer: $referer\r\n");
        
      fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
        
      fputs($fp"Content-length: "strlen($data_to_send) ."\r\n");
        
      fputs($fp"Connection: close\r\n\r\n");
        
      fputs($fp$data_to_send);
        
      printf("Sent!\n");
        while(!
      feof($fp)) {
            
      $res .= fgets($fp128);
        }
        
      printf("Done!\n");
        
      fclose($fp);

        return 
      $res;
      }



      $data '<?xml version=“1.0“ encoding=“iso-8859-1“ ?>
      <DATA>
      <ACCOUNT>
      <ACTION>GetShipping</ACTION>
      <PARTNERID>123456</PARTNERID>
      <PARTNERPASS>abc123</PARTNERPASS>
      <USERID>user</USERID>
      <USERPASS>123abc</USERPASS>
      </ACCOUNT>
      <PRODUCTS>
      <PRODUCT>
      <PRODUCT_ID>2131234</PRODUCT_ID>
      </PRODUCT>
      ... weitere Produkte
      </PRODUCTS>
      </DATA>'
      ;




      printf("Go!\n");
      $x PostToHost(
                    
      "https://www.server-fuer-anfrage.de",
                    
      "/ordner/schnittstelle.asp",
                    
      "http://www.mein-server.de/verbindung.php5",
                    
      $data
      );
      Bekomme nach der Ausführung folgende Fehlermeldungen:
      PHP-Code:

      Go

      Warningfsockopen() [function.fsockopen]: unable to connect to [url
      [
      url]https://www.server-fuer-anfrage.de:80[/url][/url] (Unable to find the socket  transport "https" 
      did you forget to enable it when you configured PHP?)  in /homepages/39/d94238094/htdocs/verbindung.php5 on line 5 
      Open

      Warningfputs(): supplied argument is not a valid stream resource in /homepages/39/d94238094/htdocs/Test/verbindung.php5 on line 7

      Warning
      fputs(): supplied argument is not a valid stream resource in /homepages/39/d94238094/htdocs/Test/verbindung.php5 on line 8

      Warning
      fputs(): supplied argument is not a valid stream resource in /homepages/39/d94238094/htdocs/Test/verbindung.php5 on line 9

      Warning
      fputs(): supplied argument is not a valid stream resource in /homepages/39/d94238094/htdocs/Test/verbindung.php5 on line 10

      Warning
      fputs(): supplied argument is not a valid stream resource in /homepages/39/d94238094/htdocs/Test/verbindung.php5 on line 11

      Warning
      fputs(): supplied argument is not a valid stream resource in /homepages/39/d94238094/htdocs/Test/verbindung.php5 on line 12

      Warning
      fputs(): supplied argument is not a valid stream resource in /homepages/39/d94238094/htdocs/Test/verbindung.php5 on line 13
      Sent

      Warningfeof(): supplied argument is not a valid stream resource in /homepages/39/d94238094/htdocs/Test/verbindung.php5 on line 15

      Warning
      fgets(): supplied argument is not a valid stream resource in /homepages/39/d94238094/htdocs/Test/verbindung.php5 on line 16

      Warning
      feof(): supplied argument is not a valid stream resource in /homepages/39/d94238094/htdocs/Test/verbindung.php5 on line 15

      Warning
      fgets(): supplied argument is not a valid stream resource in /homepages/39/d94238094/htdocs/Test/verbindung.php5 on line 16 
      Der letzte Teil der Warnung (on line 15 and on line 16) wiederholt sich dann, bis mein Rechner glüht.

      Sorry, ich komme einfach nicht weiter.

      Kommentar


      • #4
        Welchen Port hat https nochmal?? Jedenfalls nicht 80.
        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
        Schön - etwas Geschichte kann ja nicht schaden.
        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

        Kommentar


        • #5
          Hallo.

          HTTPS hat Port 443. Bringt aber auch nix.
          Trotzdem danke für den Hinweis.

          Gruß
          Gerrit

          Kommentar


          • #6
            guck mal hier http://de.php.net/fsockopen in den Usernotes nach, da sind ein paar Beispiele mit ssl, die Leute dort geben beim Protokell ssl:// an... nicht https, ich hab selber noch nie was mit fsockopen und ssl gemacht, von daher keine Ahnung.
            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
            Schön - etwas Geschichte kann ja nicht schaden.
            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

            Kommentar

            Lädt...
            X