tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
4794
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Ronn
    Ronn Ronn ist offline Mitglied
    Registriert seit
    Mar 2004
    Ort
    MV
    Beiträge
    14
    Hallo!

    Bin ziemlich neu auf diesem Gebiet & wollte mal fragen wie ich einen Webservice aus einer php datei aufgerufen bekomme. Bin am verzweifeln.

    PHP-Code:
    try
     {
          
    $client = new SoapClient(NULL,
            array(
    "location"  => "http://mbox.sycada.com/mbox/Services/Authentication.asmx",
                   
    "uri"       => "urn:Authenticate",
                   
    "style"     => SOAP_RPC,
                   
    "use"       => SOAP_ENCODED));

    //$client->Authenticate("test", "test");
          
    print($client->__soapCall("Authenticate",
                 array(new 
    SoapParam("test""test")),
                 array(
    "uri" => "urn:Authenticate",
                       
    "soapaction" => "urn:Authenticate")));
      }
      catch (
    SoapFault $e)
      {
              print(
    $e);
      } 
    Fehler :
    PHP-Code:
    SoapFault exception: [soap:ClientServer did not recognize the value of HTTP Header SOAPActionurn:Authenticatein C:Programmexampxampphtdocslogbookserviceindex.php:48 Stack trace#0 C:\Programme\xamp\xampp\htdocs\logbook\service\index.php(48): SoapClient->__soapCall('Authenticate', Array, Array) #1 {main} 
    Das ist ein bestehender Webservice, also kein selbst erstellter. Also aus c# +vs2005 ist das kein Problem. Ich muß mich erst authentifizieren bevor ich die Methoden nutzen kann. So und das wollte ich nun von php aus machen.Also erstmal authentifizieren. Aber da kommt leider die Fehlermeldung.Wer kann helfen?

    MfG Ronnsen
    Geändert von Ronn (20.07.07 um 13:13 Uhr)
     
    Wer Wind sät wird Sturm ernten!

  2. #2
    Registriert seit
    May 2007
    Ort
    Köln / Bonn
    Beiträge
    844
    Blog-Einträge
    4
    Da der Server den WSDL Modus unterstützt, verwende ihn doch auch, dann geht das alles noch einfacher:

    PHP-Code:
    <?
    $client 
    = new SoapClient('http://mbox.sycada.com/mbox/Services/Authentication.asmx?WSDL');
    $result $client->Authenticate("asdasd""asdasd");

    echo 
    $result->User->ID;
    echo 
    $result->User->CompanyDataID;
    ?>
    PS: wenn das da oben dein Passwort ist im Kommentar, würd ich es noch rausnehmen
     
    Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.

  3. #3
    Avatar von Ronn
    Ronn Ronn ist offline Mitglied
    Registriert seit
    Mar 2004
    Ort
    MV
    Beiträge
    14
    Hallo engelb,

    soweit so gut. Aber leider scheint man sich dort nicht anmelden zu können. Weil das $result
    ist immer -1. Das heißt soviel wie...nicht angemeldet.
    Was kann da noch falsch sein?

    MfG
     
    Wer Wind sät wird Sturm ernten!

  4. #4
    Avatar von Ronn
    Ronn Ronn ist offline Mitglied
    Registriert seit
    Mar 2004
    Ort
    MV
    Beiträge
    14
    Ist das eventuell ein Sicherheitsproblem? Oder ne Einstellung im Apache?

    MfG
     
    Wer Wind sät wird Sturm ernten!

  5. #5
    Avatar von Ronn
    Ronn Ronn ist offline Mitglied
    Registriert seit
    Mar 2004
    Ort
    MV
    Beiträge
    14
    Hab noch in einem anderen Forum nach Antworten gesucht.

    http://www.pear-forum.de/ftopic1876.html

    Bin leider zu keinem Ergegnis gekommen. Help!
     
    Wer Wind sät wird Sturm ernten!

  6. #6
    Registriert seit
    May 2007
    Ort
    Köln / Bonn
    Beiträge
    844
    Blog-Einträge
    4
    Es muss so aber funktionieren:

    PHP-Code:
    <?

    $client 
    = new SoapClient('http://mbox.sycada.com/mbox/Services/Authentication.asmx?WSDL');

    print_r($client->__getFunctions());
    echo 
    "\n";
    print_r($client->__getTypes());
    echo 
    "\n";

    $auth       = array('testuser','testpass');
    $response   $client->Authenticate($auth);

    /**
     * $response->User->ID
     * $response->User->CompanyDataID
     * 
     * es sollte noch geben aber beim test nicht vorhanden:
     * $response->User->Name
     * $response->User->CompanyName
     */
    ?>
    Die Fehlermeldung kommt daher das du das hier hast:

    PHP-Code:
          $client = new SoapClient(NULL,
            array(
    "location"  => "http://mbox.sycada.com/mbox/Services/Authentication.asmx",
                   
    "uri"       => "urn:Authenticate",
                   
    "style"     => SOAP_RPC,
                   
    "use"       => SOAP_ENCODED)); 
    aber im WSDL steht das es so aussehen müsste:
    PHP-Code:
          $client = new SoapClient(NULL,
            array(
    "location"  => "http://mbox.sycada.com/mbox/Services/Authentication.asmx",
                   
    "uri"       => "urn:Authenticate",
                   
    "style"     => SOAP_DOCUMENT,
                   
    "use"       => SOAP_LITERAL)); 
    Da das File aber vorliegt würde ich einfach den WSDL Modus verwenden, ist eh einfacher.
     
    Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral.

  7. #7
    Avatar von Ronn
    Ronn Ronn ist offline Mitglied
    Registriert seit
    Mar 2004
    Ort
    MV
    Beiträge
    14
    Hallo engelb

    leider funktioniert schon die Anmeldung nicht. Da kommt immer -1 zurück.Das geht ja wenigstens noch in Soap, wenn auch nicht viel mehr. Ich poste mal was ich probiert habe.

    PHP-Code:
    //1.
             
    $client = new SoapClient('http://www/mbox/Services/Authentication.asmx?WSDL');
            
    print_r($client->__getFunctions());
            echo 
    "<br><br><br>";
            
    print_r($client->__getTypes());
            echo 
    "<br><br><br>";
            
    $auth = array('testbenutzer','testpass');
            
    $response   $client->Authenticate($auth);
            
    print_r($response);

    //2.
               
    $client = new SoapClient(NULL,array("location"  => "http://www/mbox/Services/Authentication.asmx",
                                           
    "uri"       => "urn:Authenticate",
                                          
    "style"     => SOAP_DOCUMENT,
                                           
    "use"       => SOAP_LITERAL)); 

                
    $response   $client->Authenticate('testbenutzer','testpass');
                
    print_r($response); 
    MfG
     
    Wer Wind sät wird Sturm ernten!

  8. #8
    Avatar von Ronn
    Ronn Ronn ist offline Mitglied
    Registriert seit
    Mar 2004
    Ort
    MV
    Beiträge
    14
    Hallo,

    hat nicht irgend jemand noch eine Idee wie sowas funktionieren könnte?
    Wäre sehr wichtig für mich. Hab nirgendwo was alternatives gefunden.

    MfG
     
    Wer Wind sät wird Sturm ernten!

Ähnliche Themen

  1. C# Webservice unter PHP aufrufen
    Von saschagoetz im Forum PHP
    Antworten: 0
    Letzter Beitrag: 10.01.08, 09:12
  2. .NET Webservice in PHP aufrufen
    Von c_csiebert im Forum PHP
    Antworten: 1
    Letzter Beitrag: 16.06.07, 18:57
  3. Webservice aus dem WTK 2.3 aufrufen
    Von kroesi im Forum Java
    Antworten: 5
    Letzter Beitrag: 07.11.06, 18:44
  4. Antworten: 1
    Letzter Beitrag: 12.04.06, 10:36
  5. Webservice mit C++ aufrufen
    Von BugsBastard im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 04.03.04, 10:27