【发布时间】:2016-11-08 05:15:00
【问题描述】:
在内联路由闭包函数中定义 NuSOAP Web 服务效果很好,但在路由闭包控制器中则不行。
示例:工作
routes.php:
Route::any('api', function() {
require_once ('nusoap.php');
$server = new \nusoap_server();
$server->configureWSDL('TestService', false, url('api'));
$server->register('test',
array('input' => 'xsd:string'),
array('output' => 'xsd:string'),
);
function test($input){
return $input;
}
$rawPostData = file_get_contents("php://input");
return \Response::make($server->service($rawPostData), 200, array('Content-Type' => 'text/xml; charset=ISO-8859-1'));
});
SOAP 测试客户端
require_once('nusoap.php');
$client = new \nusoap_client('http://my-laravel-installation.com/api?wsdl', true);
$result = $client->call("test", "HelloWorld");
print_r($result); exit();
回复
你好世界
这按预期工作。
示例:不工作
将代码移动到专用控制器会破坏它:
routes.php:
Route::any('api', 'SoapController@server');
SoapController.php:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class SoapController extends Controller {
public function server() {
require_once ('nusoap.php');
$server = new \nusoap_server();
$server->configureWSDL('TestService', false, url('api'));
$server->register('test',
array('input' => 'xsd:string'),
array('output' => 'xsd:string'),
);
function test($input){
return $input;
}
$rawPostData = file_get_contents("php://input");
return \Response::make($server->service($rawPostData), 200, array('Content-Type' => 'text/xml; charset=ISO-8859-1'));
}
}
SOAP 测试客户端
require_once('nusoap.php');
$client = new \nusoap_client('http://my-laravel-installation.com/api?wsdl', true);
$result = $client->call("test", "HelloWorld");
print_r($result); exit();
回复
“方法'test'('test')未在服务中定义('''')
复制步骤:
- 安装 Laravel v5.2.45 的新副本
- 下载最新的 NuSOAP 版本 (v0.9.5)
- 为 NuSOAP Web 服务定义路由 - 从上面复制并粘贴代码
- 创建 SoapController - 从上面复制并粘贴代码
- 创建一个新的临时路由作为 SOAP 客户端,并将上面 SOAP 测试客户端下面的代码复制并粘贴到该路由的闭包函数中
- 在浏览器中加载临时路由页面以执行对 Web 服务的 SOAP 调用
结论:
这表明,由于某种原因,使用内联路由功能与使用专用路由控制器时的输出不同。
这怎么可能?
非常感谢您的见解:
如果你有:
- 有这方面的经验,您就有了解决方案
- 或者,您知道为什么会发生这种情况
- 或者,您对为什么将 NuSOAP 代码放在控制器中生成的响应与将其放在内联路由函数中产生不同的响应有任何想法
...请插话。
感谢您的意见!
【问题讨论】:
标签: php web-services laravel soap laravel-5