Ankündigung

Einklappen
Keine Ankündigung bisher.

POST-Parameter mit fsockopen() übertragen (XML)

Einklappen

Neue Werbung 2019

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

  • POST-Parameter mit fsockopen() übertragen (XML)

    Daten sollen an eine XML-Schnittstelle übergeben werden...

    Anleitung hierzu: Die XML-Anfrage muss via HTTP-POST übermittelt werden. Der POST-Parameter (welcher die XML-Daten enthält) muss ebenfalls "xml" heißen.

    http://www.domain.de/xml.html?xml=...

    Wo liegt da der Fehler:

    Code:
    $query = rawurlencode("xml=<Daten><Name>".$name."</Name></Daten>");
    $domain = "www.domain.de";
    $sock=fsockopen($domain,80);
    
    if($sock)
    
    {
    		
    fputs($sock,"POST /xml.html HTTP/1.0\n");
    fputs($sock,"Host: ".$domain."\n");
    fputs($sock,"Content-type: application/x-www-form-urlencoded\n");
    fputs($sock,"Content-length: ".strlen($query)."\n\n".$query);
    			
    while(!feof($sock)){$res.=trim(fgets($sock,128));}
    		
    echo $res;
    	
    fclose($sock);
    	
    }
    Der Server meldet immer "POST-Parameter not found"...


  • #2
    Schonmal mit dem PEAR httpclient versucht?
    http://pear.php.net

    In den http specs steht immer crfl also \r\n und nicht nur \n
    Ob es daran liegt, weiss ich nicht.

    Kommentar


    • #3
      Nein es soll so einfach wie möglich gehen, also ohne PEAR-Mist.

      \r\n ist in dem Falle auch egal, weil der xml-Parameter ja nichtmal erkannt wird.

      Kommentar


      • #4
        Na wenn Du meinst.
        Mir wäre das einfache Suchen und Ersetzen um den Spezifikationen zu genügen ja auch viel zu kompliziert

        Kommentar


        • #5
          Ja wozu auch PEAR wenn ich nichtmal weiß ob das beim Kunden läuft?!??!?!

          Es geht hier lediglich darum das eine Variable richtig erkannt wird und mehr nicht.

          Da oben kann nur ein kleiner Fehler drin sein...

          Kommentar


          • #6
            Es geht um das \r\n statt \n.
            Probier es aus. Wenn es nicht daran liegt, super, eine Fehlerquelle in 2 Sekunden ausgeschlossen.

            Kommentar


            • #7
              Ich brauch eine Lösung des Problems und nicht die von kleinen Schönheitsproblemen

              Kommentar


              • #8
                Und wenn es kein Schönheitsproblem ist?
                Alter Verwalter, probier es endlich aus und fasel nicht drumherum.

                ftp://ftp.isi.edu/in-notes/rfc2616.txt
                generic-message = start-line
                *(message-header CRLF)
                CRLF
                [ message-body ]
                start-line = Request-Line | Status-Line
                Die Spezifikation sagt \r\n (crlf). Dein Programm benutzt \n (lf). Mögliche Fehlerquelle, eleminieren. Jetzt. Fang endlich, an diese zwei-Sekunden-Aufgabe umzusetzen oder such Dir ein anderes Hobby. Nicht glauben, dass es nicht daran liegt; wissen.
                Bei sowas fass ich mir echt an den Kopf.
                "Warum kein Diesel, nur weil da Super auf dem Tankdeckel steht? Mit solchen Schönheitsdetails kann ich mich jetzt nicht aufhalten"

                Kommentar


                • #9
                  Ja mit solchen Details kann ich mich wirklich nicht aufhalten, weil \n vollkommen reicht und bisher auch überall funktioniert hat.

                  Kommentar


                  • #10
                    Gut, dann bin ich mal gespannt, wier lange es dauert, bis Du ausprobiert hast, das Gleicheitszeichen aus dem rawurlencode rauszunehmen.

                    Kommentar


                    • #11
                      Was soll das bringen? Dann wird ja erst die Variable "xml" nicht mehr erkannt...

                      Kommentar


                      • #12
                        Es sind eben doch die Details.

                        Was macht rawurlencode()? Und was macht es mit =? Wozu wird das benötigt?
                        Und jetzt die Preisfrage: Warum ist das bei xml= unerwünscht?

                        Mit "rausnehmen" ist natürlich nicht "löschen" gemeint.

                        Kommentar


                        • #13
                          Und nun ist er wohl eingeschnappt.

                          Kommentar


                          • #14
                            Nö ich hab die Lösung mittlerweile gefunden

                            Kommentar


                            • #15
                              Ah so. Für den Fall das jemand ein ähnliches Problem hat.
                              PHP-Code:
                              <?php
                              $query 
                              'xml='.rawurlencode('<Daten><Name>'.$name.'</Name></Daten>');
                              $domain 'www.domain.de';

                              $errno=$errstr=0;
                              $sock=fsockopen($domain,80$errno$errstr);

                              if(!
                              $sock) {
                                  die(
                              $errstr);
                              }
                              else {
                                  
                              fputs($sock"POST /xml.html HTTP/1.0\n\r");
                                  
                              fputs($sock"Host: ".$domain."\r\n");
                                  
                              fputs($sock"Content-type: application/x-www-form-urlencoded\r\n");
                                  
                              fputs($sock"Content-length: ".strlen($query)."\r\n\r\n");
                                  
                              fputs($sock$query);
                                
                                
                              $res=''
                                  while(!
                              feof($sock)) {
                                      
                              $res.=trim(fgets($sock,128));
                                  }
                                  
                              fclose($sock);

                                  echo 
                              $res;
                              }
                              ?>

                              Kommentar

                              Lädt...
                              X