Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数调用中需要身份验证的PHP SOAP客户端_Php_Apache_Soap_Soap Client - Fatal编程技术网

函数调用中需要身份验证的PHP SOAP客户端

函数调用中需要身份验证的PHP SOAP客户端,php,apache,soap,soap-client,Php,Apache,Soap,Soap Client,我对使用SOAP是完全陌生的,我希望创建一些连接到现有服务的客户端软件,该服务不为PHP提供任何资源/演示。我想确定我的代码是否有问题,或者可能是系统问题(我在Windows Server 2008 R2环境中创建了Apache2.4/PHP7.2.7) 我已经花了好几个小时来测试这些东西,并在这里讨论了许多其他SOAP/PHP主题,我在创建自己的线程时所做的区别在于,在SoapClient调用中需要身份验证,而在$client->\uuuSOAPCall(function,params)调用中

我对使用SOAP是完全陌生的,我希望创建一些连接到现有服务的客户端软件,该服务不为PHP提供任何资源/演示。我想确定我的代码是否有问题,或者可能是系统问题(我在Windows Server 2008 R2环境中创建了Apache2.4/PHP7.2.7)

我已经花了好几个小时来测试这些东西,并在这里讨论了许多其他SOAP/PHP主题,我在创建自己的线程时所做的区别在于,在SoapClient调用中需要身份验证,而在$client->\uuuSOAPCall(function,params)调用中需要身份验证

首先,这是我在PHP中所做的

$customerArray = array( $cust1 , $cust2, $cust3 );
$credentials = array(
 'login' => $login,
 'password' => $password,
);  

try{
    $client = new SoapClient($soaplink);//, $credentials);
} catch (Exception $e) {
    echo "<h2>Exception Error in SoapClient</h2>";
    echo $e->getMessage();
}   
var_dump($client->__getFunctions());

try{
    $response = $client->__soapCall("getCustomers", array($customerArray, $credentials));
}catch (Exception $e) {
    echo "<h2>Exception Error in soapCall</h2>";
    echo $e->getMessage();
}   
var_dump($response());
$customerArray=数组($cust1、$cust2、$cust3);
$credentials=数组(
'login'=>login$,
“密码”=>$password,
);  
试一试{
$client=新的SoapClient($soaplink);/,$credentials);
}捕获(例外$e){
回显“SoapClient中的异常错误”;
echo$e->getMessage();
}   
var_dump($client->_getFunctions());
试一试{
$response=$client->_soapCall(“getCustomers”,数组($customerArray,$credentials));
}捕获(例外$e){
echo“soapCall中的异常错误”;
echo$e->getMessage();
}   
变量转储($response());
第一个try块完成,无论是否使用凭据数组。尝试调用函数时的第二个try块返回异常“看起来我们没有XML文档”

SOAP服务提供了演示XML文件,用于此函数的文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope 
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <soapenv:Body>
        <ns1:getCustomers 
            soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
            xmlns:ns1="http://ws.praxedo.com/2008_07_01/customermodel/service"
        >
            <in0 
                soapenc:arrayType="soapenc:string[3]" 
                xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
            >
                <in0 xsi:type="soapenc:string">CUSTOMER001</in0>
                <in0 xsi:type="soapenc:string">CUSTOMER002</in0>
                <in0 xsi:type="soapenc:string">CUSTOMER003</in0>
            </in0>
            <in1 
                xsi:type="soapenc:string" 
                xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
            >
                login|password
            </in1>
        </ns1:getCustomers>
    </soapenv:Body>
</soapenv:Envelope>

客户001
客户002
客户003
登录|密码
还提供了WSDL文件,可能我需要从中加载,但在演示之后没有提供任何结果。我可以在这里包含一些WSDL,但我相信XML提供了所有相关的细节


那么,有人能看到我的PHP中是否有什么地方做错了,或者我应该做些什么,我需要查看客户端Apache/SOAP服务器端吗

我强烈建议您使用WSDL-to-PHP生成器,因为它可以让您毫无疑问地构造请求(至少取决于您的PHP知识水平)


试试这个项目。您必须安装它,然后生成PHPSDK。生成的SDK使用composer并包含发送任何请求所需的所有类和方法。看看自动生成的tutorial.php文件,这是一个很好的起点。

好的,我来看看,看看我能用它做些什么。我从零开始使用soap,所以它可能是我需要的工具,让这一切顺利进行。