fgets schlägt fehl

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • fgets schlägt fehl

    Hallo Leute,

    ich bin langsam am Ende... Ich will von PHP aus, einen java Servlet aufrufen... habe den unten stehenden Code benutzt.. Es hat vor 4 Tagen noch richtig funktioniert aber seit einige tagen schlägt einfach fgets fehl... Ich habe keine änderungen am code durchgeführt. Es liegt auch nicht am tomcat-server, denn ich habe auch auf einen anderen rechner mit einen neuen tomcat versucht aber ohne erfolg..

    Hier ist der Code

    PHP Code:
    <?php

    $data 
    "name=tcha&vorname=will";

    $response postDataToHost("localhost""8080""/Test/Test"$data);

      function 
    postDataToHost($host$port$path$data_to_send) {

            
    $fp fsockopen($host$port);
            
    $referer "http://".$host.":".$port."".$path;
        
    if (!
    $fp) {
        echo 
    $errstr" : " .$errno ."<br />\n";
    } else {
        
    $out "POST $path HTTP/1.1\r\n";
        
    $out .= "Host: $host\r\n";
        
    $out .= "Referer: $referer\r\n";
        
    $out .= "Content-type: application/x-www-form-urlencoded\r\n";
        
    $out .= "Content-length: "strlen($data_to_send) ."\r\n";
        
    $out .= "Connection: close\r\n";
        
    $out .= $data_to_send;
        
            
    fwrite($fp$out);

        
    $res fgets($fp1);
        if (!
    $res) {
            echo 
    "fgets fehlgeschlagen"; die();
        }
            
        while(!
    feof($fp)) {
            
    $res .= fgets($fp128);
            if (!
    $res) { echo "fgets fehlgeschlagen"; die(); }
        }
        
    fclose($fp);
    }
            
            echo 
    "Response : " .$res;
            return 
    $res;                  
        }
    ?>
    Wie gesagt, ich bekomme nur auf dem bildschirm zu sehen, dass fgets fehlgeschlagen.. Mein servlet wird gar nicht angesprochen..

    Kann bitte jemand mir sagen warum oder ein anderer weg zeigen wie ich von php aus eine java klasse bzw. servlet aufrufen kann..

    Danke für eure Antwort

    Mfg

    William
    Last edited by wkamdem; 21-10-2007, 14:35.

  • #2
    Kannst du das Servlet im Browser aufrufen?

    Comment


    • #3
      Ja ich kann das servlet im browser aufrufen...

      Comment


      • #4
        ($out .= "Connection: close\r\n" nach dem letzten header gehört ein doppelter crlf

        und $res = fgets($fp, 1); und dann fgets in einer schleife ist mir auch nicht so ganz klar.

        Comment


        • #5
          ich hatte vorher erst nur die while schleife ohne $res = fgets($fp, 1);

          Ich dachte, es liegt vielleicht an der while-schleife bzw. die 128, das ich bei fegts() migegeben habe...

          deshalb habe ich $res = fgets($fp, 1);eingeführt nur zum testen...

          Wenn man sieht, ich landet ich in der if-Abfrage
          PHP Code:
          $res fgets($fp1);
              if (!
          $res) {
                  echo 
          "fgets fehlgeschlagen"; die();
              } 
          bekomme ich dann auf dem bildschirm "fgets fehlgeschlagen" und das skript wird beendet... Also es war nur zum testzweck...

          Comment


          • #6
            Hallo 3DMax,

            ich habe doppelter crlf hinzugefügt.... bekomme immer "fgets fehlgeschlagen"

            Der code sieht jetzt so aus
            PHP Code:
            <?php
            error_reporting
            (E_ALL);
            $data "name=tcha&vorname=will";

            $response postDataToHost("localhost""8080""/Test/Test"$data);

              function 
            postDataToHost($host$port$path$data_to_send) {

                    
            $fp fsockopen($host$port);
                    
            $referer "http://".$host.":".$port."".$path;
                
            if (!
            $fp) {
                echo 
            $errstr" : " .$errno ."<br />\n";
            } else {
                
            $out "POST $path HTTP/1.1\r\n";
                
            $out .= "Host: $host\r\n";
                
            $out .= "Referer: $referer\r\n";
                
            $out .= "Content-type: application/x-www-form-urlencoded\r\n";
                
            $out .= "Content-length: "strlen($data_to_send) ."\r\n";
                
            $out .= "Connection: close\r\n\r\n";
                
            $out .= $data_to_send;
                
                    
            fwrite($fp$out);

                
            $res fgets($fp1);
                if (!
            $res) {
                    echo 
            "fgets fehlgeschlagen"; die();
                }
                    
            //    while(!feof($fp)) {
            //        $res .= fgets($fp, 128);
            //        if (!$res) { echo "fgets fehlgeschlagen"; die(); }
            //    }
                
            fclose($fp);
            }
                    
                    echo 
            "Response : " .$res;
                    return 
            $res;                  
                }
            ?>
            Last edited by wkamdem; 21-10-2007, 18:41.

            Comment


            • #7
              PHP Code:
                  $res fgets($fp1);
                  if (
              $res===false) {
                      echo 
              "fgets fehlgeschlagen"; die();
                  } 
              Schlägt die Abfrage immer noch fehl? error_reporting oben?

              Comment


              • #8
                Ja es schlägt immer fehl...

                Was meinst du mit error_reporting??

                Comment


                • #9
                  Ja es schlägt immer fehl...
                  Ich meine, ob sie nach meiner Änderung immer noch fehlt schlägt!!
                  -> if ($res===false)

                  Was meinst du mit error_reporting??
                  Siehe Regeln!

                  Comment


                  • #10
                    Ja ich habe deine änderungen hinzugefügt und es schlägt immer fehl...

                    Comment


                    • #11
                      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                      Comment


                      • #12
                        Hallo, ich habe error_reporting eingebaut... Es kam dann am bildschirm dass die variable $res nicht deklariert ist....

                        Jetzt kann ich mein servlet ansprechen...

                        Danke für eure Hilfe

                        mfg

                        william

                        Comment

                        Working...
                        X