HTTP POST Frage

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

  • #16
    ich habs geschafft

    Hallo nochmal,

    ich habe es endlich geschafft.
    Nach 100 maligem Lesen der Beiträge und Doku habe ich mit
    PHP-Code:
    file_get_contents("php://input"); 
    endlich mein Ziel erreicht.

    FAST

    in meiner XML-Ausgabe stehen im Browser oben und unten immer irgendwelche Codes:
    PHP-Code:
    [B]480[/B] 
    <?xml version="1.0" encoding="UTF-8"?>
    <ew:ind xmlns:ew="http://www.test.net">
    ...
    </ew:inquiry_A2>

    [B]0[/B]
    Es geht um die fettgedruckten.
    Ich hab keine Ahnung(mal wieder) wo die herkommen??

    Im IE7 erzeugen die auch einen Fehler:
    PHP-Code:
    The XML page cannot be displayed 
    Cannot view XML input using style sheet

    Please correct the error and then click the Refresh button, or try again later


    --------------------------------------------------------------------------------

    Invalid at the top level of the document
    Error processing resource 'http://datenserver.de/testdi/xml_cli.php5...

    480

    P.S. danke an alle, die mir bisher geholfen haben

    Kommentar


    • #17
      bleib lieber bei der angestrebten lösung aus dem ersten post und beachte wahsagas hinweis.

      Kommentar


      • #18
        Aber ich habe doch wahsagas Rat befolgt.

        PHP-Code:
        $GLOBALS['HTTP_RAW_POST_DATA'
        und
        PHP-Code:
        file_get_contents("php://input"
        liefert das gleiche Ergebnis, oder was meinst du?

        Kommentar


        • #19
          Hi,

          besser wäre, wenn Du einen korrekten Post-Request absetzt, so dass Du $GLOBALS['HTTP_RAW_POST_DATA'] gar nicht brauchst. Schau mal hier.

          LG

          Kommentar


          • #20
            ok, mein POST-Request ist wie in der php-faq beschrieben.
            trotzdem habe ich vor und nach meinen eigentlich übertragenen Post-Werten irgendwelche Zeichen in dem "serverscript", welches den XML-Datenstrom empfangen und bearbeiten soll.

            diese Zeichen übertrage ich nicht bewusst, und ich denke die erzeugen den Fehler im IE.

            Kommentar


            • #21
              code + testdaten + testausgabe

              Kommentar


              • #22
                und ich denke die erzeugen den Fehler im IE.
                Habs jetzt nur noch überflogen, aber ja. Denn das XML-Dokument ist nicht mehr wohlgeformt. Das mag der IE nicht, wenn er den Baum anzeigen will.

                Kommentar


                • #23
                  eigentlich ist es wohlgeformt, aber egal.
                  ich denke ich habe das alles nicht so deutlich erklärt.
                  Ich versuche es nochmal.

                  Also, ich rufe ein Script auf, welches einen HTTP-Request ausführen soll.
                  xml_cli.php5:
                  PHP-Code:
                  <?php
                  $fp1 
                  fopen("./test.xml","r");
                  while(!
                  feof($fp1))
                  {
                      
                  $file1 fgets($fp1100);
                      
                  $file $file.$file1;
                  }
                  $fp fsockopen("www.jogi-web.de",80,$errstr,$errno);
                  if(!
                  $fp)
                  {
                      die();
                  }
                  else
                  {
                      
                  fputs($fp"POST /xml/xml_svr.php5 HTTP/1.1\r\n");
                      
                  fputs($fp"Host: jogi-web.de\r\n");
                      
                  fputs($fp"Referer: jogi-web.de.de\r\n");
                      
                  fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
                      
                  fputs($fp"Content-length: "strlen($file) ."\r\n");
                      
                  fputs($fp"Connection: close\r\n\r\n");
                      
                  fputs($fp$file);
                  }
                  $data "";
                  while(!
                  feof($fp))
                  {
                      
                  $fget fgets($fp128);
                      
                  $data .= $fget;
                  }
                  fclose($fp);
                  $xml_arr explode("\r\n\r\n",$data);
                  echo 
                  $xml_arr[1];
                  ?>
                  das aufgerufen Serverscript nimmt den XML-Datenstrom entgegen und gibt ihn wieder aus.

                  xml_cli.php
                  PHP-Code:
                  <?php
                  $str 
                  file_get_contents("php://input");
                  $xml = new SimpleXMLElement($str);
                  $wellformed $xml->asXML();
                  echo 
                  $wellformed;
                  ?>
                  Beispiellink für den Aufruf
                  Wenn ihr den Beispiellink klickt, sieht man die XML-Daten und davor und danach sind Zeichen, die von irgendwoher kommen ???

                  Später soll das Serverscript die XML-Daten lesen, auswerten/bearbeiten, und als wohlfgeformten XML-String wieder ausgeben.

                  ich hoffe ich habe es so erklärt, dass ihr mir folgen könnt - wohin auch immer

                  Kommentar


                  • #24
                    wenn du bei php://input bleibst, musst du die zeichen manuell abschneiden.

                    Kommentar


                    • #25
                      eigentlich ist es wohlgeformt, aber egal.
                      ach? du bezeichnest eine Quelle mit einer 480 VOR dem öffnenden <?xml als wohlgeformt. Ja ne, ist klar!

                      Kommentar


                      • #26
                        @penizillin wie kann ich es denn sonst machen?

                        @TobiaZ genau das ist mein Problem, wo kommt die 480 her ??

                        Kommentar


                        • #27
                          wahsaga hat ein schema erwähnt. machst du es damit - hast du die daten in $_POST.

                          Kommentar


                          • #28
                            wenn ich es so mache,
                            PHP-Code:
                            print_r($_POST); 
                            steht das drin:
                            PHP-Code:
                            Array 1 1 1 1 1 d 478 \"1.0\" encoding=\"UTF-8\"?>  A2   333333  91    10    
                            3286347908514    1      20    4019238219036    2      30    8019227171624    4    1 2 ) 0 
                            Quelltext:
                            PHP-Code:
                            6  
                            Array

                            2  
                            (

                            1  
                             
                            1  
                             
                            1  
                             
                            1  
                             
                            1  
                            [
                            d  
                            <?xml_version
                            5  
                            ] => 
                            478
                            \"1.0\" encoding=\"UTF-8\"?>
                            <ew:inquiry_A2 xmlns:ew=\"http://www.reifen.net\">
                              <DocumentID>A2</DocumentID>
                              <BuyerParty>
                                <PartyID>333333</PartyID>
                                <AgencyCode>91</AgencyCode>
                              </BuyerParty>

                              <OrderLine>
                                <LineID>10</LineID>
                                <OrderedArticle>
                                  <ArticleIdentification>
                                    <EANUCCArticleID>3286347908514</EANUCCArticleID>
                                  </ArticleIdentification>
                                  <RequestedQuantity>
                                    <QuantityValue>1</QuantityValue>

                                  </RequestedQuantity>
                                </OrderedArticle>
                              </OrderLine>
                              <OrderLine>
                                <LineID>20</LineID>
                                <OrderedArticle>
                                  <ArticleIdentification>
                                    <EANUCCArticleID>4019238219036</EANUCCArticleID>

                                  </ArticleIdentification>
                                  <RequestedQuantity>
                                    <QuantityValue>2</QuantityValue>
                                  </RequestedQuantity>
                                </OrderedArticle>
                              </OrderLine>
                              <OrderLine>
                                <LineID>30</LineID>

                                <OrderedArticle>
                                  <ArticleIdentification>
                                    <EANUCCArticleID>8019227171624</EANUCCArticleID>
                                  </ArticleIdentification>
                                  <RequestedQuantity>
                                    <QuantityValue>4</QuantityValue>
                                  </RequestedQuantity>
                                </OrderedArticle>

                              </OrderLine>
                            </ew:inquiry_A2>

                            1  


                            2  
                            )

                            0
                            Das ist es auch nicht,oder?

                            Kommentar


                            • #29
                              was soll denn auch eine ausgabe an dem skript verändern?

                              du sollst die daten aufbereiten, bevor du sie per socket und POST verschickst.

                              Kommentar


                              • #30
                                Was muss ich den aufbereiten, und wo meinst du, hat wahsaga das beschrieben.
                                Er hat doch lediglich gesagt:
                                Die, die im üblichen Schema übergeben werden, ja.
                                (Dieses lautet bekanntlich name=value&name2=value2&...)

                                Wenn du aber "einfach nur so" Daten sendest, werden die natürlich nicht in $_POST aufbereitet.
                                $HTTP_RAW_POST_DATA gäbe es dann ggf. auch noch.
                                das $HTTP_RAW_POST_DATA ist bei mir aber leer ?

                                Kommentar

                                Lädt...
                                X