肥皂和laravel不能一起工作

时间:2018-05-09 14:29:47

标签: php laravel

我试图将我的客户肥皂连接到我的服务肥皂而不是Laravel成功。我的SO是ubuntu 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 个答案:

答案 0 :(得分:0)

啊,我认为soma实际上是总和,你在张贴前翻译了吗?

看这里:

$client->sum($array);

你传递一个参数,一个数组,而你的类需要两个参数。

相反:

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

答案 1 :(得分:0)

这是我的错误:我在终端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
]);

当我在ubuntu 16上安装,启动和设置apache2服务器时,我已经解决了我的问题。我已经将默认文件夹指向了我的laravel应用程序,它运行正常。