我试图将我的客户肥皂连接到我的服务肥皂而不是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个预期
但是在函数的声明中,我提出了两个论点。发生了什么事?
答案 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应用程序,它运行正常。