Мыло и Laravel не работают вместе - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь соединить мое клиентское мыло с моим мылом подачи без успеха на Laravel. Мой ТАК убунту 16. Я искал в Google и здесь на stackoverflow, и я ничего не нашел.

Это мой маршрут:

Route::get('/server.wsdl','SOAP\WsdlController@index');
Route::any('/server','SOAP\ServidorController@server');
Route::get('/client','SOAP\ClientController@client');

Это мой ClientController:

use Zend\Soap\Client;
public function client(){
$client = new Client('http://localhost:8080/server.wsdl',[
'soap_version'=> SOAP_1_1
]);
$array = array(
"num1" => 10,
"num2" => 10
);
print_r($client->sum($array));
}

Это мой ServidorController:

 use Zend\Soap\Server;
 class ServidorController extends Controller
 {
    public $serverUrl = "http://localhost:8080/server";
    public function server()
    {
        $soap = new Server($this->serverUrl . '.wsdl');
        $soap->setClass('App\Http\Controllers\Classes\Hello');
        $soap->handle();
    }
    }

Это мой WsdlController:

use Zend\Soap\AutoDiscover;
class WsdlController extends Controller
{
public $serverUrl = "http://localhost:8080/server";

public function index()
{

    $soapAutoDiscover = new AutoDiscover(new 
    \Zend\Soap\Wsdl\ComplexTypeStrategy\ArrayOfTypeSequence());
    $soapAutoDiscover->setBindingStyle(array('style' => 'document'));
    $soapAutoDiscover->setOperationBodyStyle(array('use' => 
    'literal'));
    $soapAutoDiscover->setClass('App\Http\Controllers\Classes\Hello');
    $soapAutoDiscover->setUri($this->serverUrl);
    $soapAutoDiscover->handle();

   }
}

Наконец, это мой класс Здравствуйте:

class Hello
{
/**
 * @param int $num1
 * @param int $num2
 * @return int
 */
function soma($num1, $num2)
{
    return $num1 + $num2;
}
}

Мой фреймворк показывает эту ошибку:

SoapFault
Слишком мало аргументов для функции App \ Http \ Controllers \ Classes \ Hello :: soma (), 1 передано и ожидается ровно 2

Но в объявлении функции я поставил 2 аргумента. Что случилось с этим?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Это были мои ошибки: я выполнял команду на терминале 1 «php artisan serve», а в терминале 2 я выполнял «php artisan serve --port: 8080», и, как вы можете видеть ниже, $ client указывал на 'http://localhost:8080/server.wsdl'.

$client = new Client('http://localhost:8080/server.wsdl',[
'soap_version'=> SOAP_1_1
]);

Я решил свой вопрос, когда я установил, запустил и настроил сервер apache2 в Ubuntu 16. Я указал папку по умолчанию для моего приложения laravel, и он отлично работает.

0 голосов
/ 09 мая 2018

Ах, я так понимаю, сома на самом деле сумма, а вы переводили перед публикацией?

Смотрите здесь:

$client->sum($array);

Вы передаете один аргумент, массив, тогда как ваш класс ожидает два аргумента.

Вместо того, чтобы:

$client->sum($array['num1'], $array['num2']);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...