Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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_Soap - Fatal编程技术网

发出php soap请求时遇到问题

发出php soap请求时遇到问题,php,soap,Php,Soap,我很难理解如何正确地创建soap请求,以及如何从服务器接收信息 这里有一个指向我需要连接到的服务文档的链接。它显示了soap请求和响应格式 查看他们的请求格式,我不确定如何将其传递到他们的服务器。我在谷歌上搜索了一下,找到了几种发送请求的方法,但我不断发现soap falut错误。下面是我的最新尝试 <?php //error_reporting(E_ALL); //soap connect $client = new SoapClient("http://www.team-intr

我很难理解如何正确地创建soap请求,以及如何从服务器接收信息

这里有一个指向我需要连接到的服务文档的链接。它显示了soap请求和响应格式

查看他们的请求格式,我不确定如何将其传递到他们的服务器。我在谷歌上搜索了一下,找到了几种发送请求的方法,但我不断发现soap falut错误。下面是我的最新尝试

<?php

//error_reporting(E_ALL);

//soap connect
$client = new SoapClient("http://www.team-intro.com/ws/distributorWS.asmx?WSDL");

$params = new SoapVar("<soap12:Header><AuthHeader Domain='THEDOMAIN' xmlns='http://www.prodogix.com/'><AuthorizationKey>MYAUTHKEY</AuthorizationKey></AuthHeader></soap12:Header><soap12:Body><GetReplicatedSite xmlns='http://www.prodogix.com/'><website>USERNAME</website></GetReplicatedSite></soap12:Body>", XSD_ANYXML);

//$info[
try {
    $result = $client->GetReplicatedSite($params);
}
catch (SoapFault $exception) {
  echo $exception;      
} 

print_r($result);

?>
GetReplicatedSite($params);
}
catch(SoapFault$异常){
echo$例外;
} 
打印(结果);
?>
我已经去掉了输入值,并用所有的大写字母替换它们

我也见过有人构建一个数组来发送到soap服务器,但我似乎不知道如何在AuthHeader中传递额外的信息,如域和xmlns


谁能给我指出正确的方向。

本教程最终实现了我需要的功能:

下面是代码在其他人遇到像我这样的问题时是如何工作的

<?php

//error_reporting(E_ALL);

class feedSoap extends SoapClient
{

    var $XMLStr = "";
    function setXMLStr ($value){$this->XMLStr = $value; }
    function getXMLStr(){return $this->XMLStr; }

    function __doRequest($request, $location, $action, $version) 
    {
        $request = $this -> XMLStr;
        $dom = new DOMDocument('1.0');

        try 
        {
            $dom->loadXML($request);
        } 
        catch (DOMException $e) 
        {
            die($e->code);
        }

        $request = $dom->saveXML();

        //doRequest
        return parent::__doRequest($request, $location, $action, $version);
    }

    function SoapClientCall($SOAPXML)
    {
        return $this -> setXMLStr ($SOAPXML);
    }
}

function soapCall($wsdlURL, $callFunction="", $XMLString)
{
    $client = new feedSoap($wsdlURL, array('trace' => true));
    $reply = $client-> SoapClientCall($XMLString);
    $client->__call("$callFunction", array(), array());

    return $client -> __getLastResponse();
}

    //i just copied the soap request they provided and dropped in my values (removed for stackoverflow
$XMLString= '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
    <AuthHeader Domain="THEDOMAIN" xmlns="http://www.prodogix.com/">
        <AuthorizationKey>MYKEY</AuthorizationKey>
    </AuthHeader>
</soap:Header>
<soap:Body>
    <GetReplicatedSite xmlns="http://www.prodogix.com/">
        <website>USERSNAMEe</website>
    </GetReplicatedSite>
</soap:Body>
</soap:Envelope>';

//set up the url to post the soap request to
$wsdlURL = 'https://www.team-intro.com/ws/distributorWS.asmx?WSDL';

    //make the call, and set the soap function that I'll be using
$result = soapCall($wsdlURL, $callFunction="GetReplicatedSite", $XMLString);

print_r($result);

?>  
XMLStr=$value;}
函数getXMLStr(){return$this->XMLStr;}
函数\uuu doRequest($request、$location、$action、$version)
{
$request=$this->XMLStr;
$dom=新的DOMDocument('1.0');
尝试
{
$dom->loadXML($request);
} 
捕获量(DomeException$e)
{
模具($e->代码);
}
$request=$dom->saveXML();
//多勒奎斯特
返回父项::_doRequest($request、$location、$action、$version);
}
函数SoapClientCall($SOAPXML)
{
返回$this->setXMLStr($SOAPXML);
}
}
函数soapCall($wsdlURL,$callFunction=“”,$XMLString)
{
$client=newfeedsoap($wsdlURL,array('trace'=>true));
$reply=$client->SoapClientCall($XMLString);
$client->_调用(“$callFunction”,array(),array());
返回$client->uu getLastResponse();
}
//我只是复制了他们提供的soap请求,并将其放入我的值中(因stackoverflow而删除)
$XMLString='0
我的钥匙
USERSNAMEe
';
//设置要将soap请求发布到的url
$wsdlURL='1https://www.team-intro.com/ws/distributorWS.asmx?WSDL';
//进行调用,并设置我将使用的soap函数
$result=soapCall($wsdlURL,$callFunction=“GetReplicatedSite”,$XMLString);
打印(结果);
?>