PHP - SOAP WSDL

时间:2016-04-27 08:05:44

标签: php curl soap wsdl

目前我正在尝试构建一个小的PHP - Soap Connector,到目前为止工作得非常好。但是,当我将我的小脚本部署到我的服务器时,它将不再起作用,我不知道为什么。

我以两种不同的方式连接(通过卷曲SOAP WSDL方案,将其临时保存在脚本位置,并从中创建新的SOAP客户端,并使用SOAP WSDL Scheme URL直接创建SOAP客户端) ):

$opts = array(
    'http'=>array(
        'user_agent' => 'PHP Soap Client'
    )
);

$context = stream_context_create($opts);

// SOAP 1.2 client
$params = array (
    'encoding' => 'UTF-8',
    'verifypeer' => false,
    'verifyhost' => false,
    'soap_version' => SOAP_1_2,
    'trace' => 1,
    'exceptions' => 1,
    'connection_timeout' => 30,
);

$curlStuff = curl_init($soapURL);

curl_setopt($curlStuff,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curlStuff,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($curlStuff,CURLOPT_TIMEOUT,30);

$response = curl_exec($curlStuff);
$info = curl_getinfo($curlStuff);

if($response) {
    file_put_contents("./tempSoapScheme.wsdl", $response);
}

$soapClient = new SoapClient(
    './tempSoapScheme.wsdl',
    array(
        'trace' => 1,
        'stream_context' => $context,
        'cache_wsdl' => WSDL_CACHE_NONE
    )
);

$soapClientTwo = new SoapClient(
    $soapURL,
    array(
        'trace' => 1,
        'stream_context' => $context,
        'cache_wsdl' => WSDL_CACHE_NONE
    )
);

$result = $soapClient->myLoginMethod(
    array(
        'username' => 'my@email.example',
        'password' => 'password'
    )
);

正如我之前所说 - 在我的本地机器上,它就像一个魅力,一切都很好。不在脚本中的参数“soapURL”只是我的SOAP WSDL Scheme的https路径。

我在“$ params”数组中尝试了不同的选项,其他curl setopt设置,但我无法使其工作。

来自两个SoapClients的响应:

SOAP-ERROR: Parsing WSDL: Couldn't load from '<MyURL>' : failed to load external entity "<MyURL>",这是非常罕见的,因为CURL可以保存所有内容。

你对我有什么建议吗?

编辑 - 忘记了最重要的事情: - 应该执行脚本的服务器具有非常强大的防火墙限制,并且SOAP URL Scheme位于另一台服务器上(不同)。我想,这就是重点,为什么它不起作用,但我通过执行CURL从Scheme接收到答案。所以它只是SOAP?

0 个答案:

没有答案