Autor Zpráva
ondra256
Profil
Zdravím,

snažím se rozpohybovat soap jak ze strany serveru tak ze strany clienta. Nikdy jsem to nedělal a potřebuju pomoct nejspíše s tím serverem. Mám to zatím na localhostu.

<?php

class Server
{

    public function Import(array $data)
    {
        $server = new SoapServer(NULL, array('encoding'=>'UTF-8', "uri"=>"http://localhost/soapServer.php"));
        $server->handle();

        $f =fopen("news.txt", "w"); //otevření souboru 
         
        fwrite($f, "funguje to, jmeno je: ".$data->name); 
        fclose($f); 
    }
    
}
?>

        $client = new SoapClient(NULL, array(
            "location" => "http://localhost/soapServer.php",
            "uri" => "http://localhost/client.php",
        ));


        $result = $client->__soapCall("Import", array(
            "name" => "zkušební jméno",
            )
        ));

    


Chybu mně to žádnou nevyhazuje, ale ani se neprovede zápis do souboru, že to funguje.
ondra256
Profil
Nebo nemáte někdo příklad jednoduchého soap serveru a clienta, který funguje?
Davex
Profil
ondra256:
Tu třídu musíš definovat jako obsluhu instance třídy SoapServer. Nezkoušel jsem to.

<?php
 
class Server
{
    public function Import(array $data)
    {
        $f =fopen("news.txt", "w"); //otevření souboru 
         
        fwrite($f, "funguje to, jmeno je: ".$data['name']); 
        fclose($f); 
    }
}

  $server = new SoapServer(NULL, array('encoding'=>'UTF-8', "uri"=>"http://localhost/soapServer.php"));
  $server->setClass("Server");
  $server->handle();

?>
ondra256
Profil
Jo super, díky už to funguje.

Jen mám teď problém s odeslanými daty.

Kdzyž je chci na serveru zapsat do souboru tak místo celého řetězce se vypíše pouze první znak řetězce a když přidám atribut prijmeni a chci ho na serveru vypsat tak se vypíše opět první znak ALE JMÉNA ( NE PŘÍJMENÍ )

<?php

class Server
{

    public function import(array $data)
    {
        $f =fopen("news.txt", "w+"); //otevření souboru
        $output = "Vystup: ".$data['jmeno']. ", ".$data['prijmeni'];

        fwrite($f, $output);
        fclose($f); 
    }

    
    
}

$server = new SoapServer(NULL, array('encoding'=>'UTF-8', "uri"=>"http://localhost/system/bin/soapServer.php"));
$server->setClass("Server");
$server->handle();

?>


klient

        $data =  array(
                "jmeno" => "ondra",
                "prijmeni" => "novak"
        );
 
        $result = $client->__soapCall("import",$data);


Lámu si nad tím hlavu, ale opravdu netuším co s tím, nikdy se mně nic takového nestalo
Davex
Profil
Metoda __soapCall() očekává v druhém parametru pole argumentů, takže asi bude nutné pole obalit do pole.

$result = $client->__soapCall("import", array('data' => $data));
ondra256
Profil
Funguje, dík

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: