Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.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,如果我运行这个 $HostTransactionInfo = new HostTransactionInfo(); // std Object $HostTransactionInfo->SecurenetID = $cc->merchant->data[$this->name]['secure_net_id']; $HostTransactionInfo->SecureKey = $cc->merchant->data[$this->name]

如果我运行这个

$HostTransactionInfo = new HostTransactionInfo();  // std Object
$HostTransactionInfo->SecurenetID = $cc->merchant->data[$this->name]['secure_net_id'];
$HostTransactionInfo->SecureKey = $cc->merchant->data[$this->name]['secure_key'];
$HostTransactionInfo->Test = self::TEST;

$securenet = new SoapClient(self::WSDL, array('features' => SOAP_SINGLE_ELEMENT_ARRAYS));
$host_trans_info = new SoapVar($HostTransactionInfo, SOAP_ENC_OBJECT);
var_dump($host_trans_info);

$save = $securenet->Process_Save($host_trans_info);
我在每个变体上都会收到这样的消息:“服务器无法处理请求。-->对象引用未设置为对象的实例。”

我的SoapClient::\uuu getTypes()请求为我提供以下信息:

array(
 [2] => struct HostTransactionInfo {
 string SecurenetID;
 string SecureKey;
 string Test;
}
 [6] => struct Process_Save {
 HostTransactionInfo oTi;
}
)
array (
    [2] => Process_SaveResponse Process_Save(Process_Save $parameters)
)
我的SoapClient::\uu getFunctions()请求为我提供以下信息:

array(
 [2] => struct HostTransactionInfo {
 string SecurenetID;
 string SecureKey;
 string Test;
}
 [6] => struct Process_Save {
 HostTransactionInfo oTi;
}
)
array (
    [2] => Process_SaveResponse Process_Save(Process_Save $parameters)
)

有人知道我做错了什么吗?

错误由Web服务返回。为什么不联系他们的客户呢


但在任何情况下,服务器都应该返回比“对象引用未设置为对象实例”更具信息性的消息。他们的代码在收到一些意外输入时取消对空指针的引用,这一事实对于被认为是“安全”的支付系统来说不是个好兆头。

错误由Web服务返回。为什么不联系他们的客户呢


但在任何情况下,服务器都应该返回比“对象引用未设置为对象实例”更具信息性的消息。他们的代码在收到一些意外输入时会取消对空指针的引用,这一事实对于被认为是“安全”的支付系统来说并不是一个好兆头。

请检查发送到服务器的XML请求和返回的XML响应:

// ...
$securenet = new SoapClient(self::WSDL, array(
    'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
    'trace'    => true  // that's important for the debugging methods to work
));
// ...
$save = $securenet->Process_Save($host_trans_info);
var_dump($securenet-> __getLastRequestHeaders());
var_dump($securenet-> __getLastRequest());
var_dump($securenet-> __getLastResponseHeaders());
var_dump($securenet-> __getLastResponse());

这将有助于让您了解线路上发生的情况。如果可以排除任何与服务器相关的问题,则该错误很可能与未采用所需格式的XML SOAP请求有关。

请检查发送到服务器的XML请求和返回的XML响应:

// ...
$securenet = new SoapClient(self::WSDL, array(
    'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
    'trace'    => true  // that's important for the debugging methods to work
));
// ...
$save = $securenet->Process_Save($host_trans_info);
var_dump($securenet-> __getLastRequestHeaders());
var_dump($securenet-> __getLastRequest());
var_dump($securenet-> __getLastResponseHeaders());
var_dump($securenet-> __getLastResponse());

这将有助于让您了解线路上发生的情况。如果您可以排除任何与服务器相关的问题,则该错误很可能与未采用所需格式的XML SOAP请求有关。

嗨,对于原始询问者来说,这可能太晚了,但是对于可能有相同错误的任何人来说

这是我在使用M$.Net或C#(CVS)或任何其他风格的M$Soap服务器时学会的一个技巧。。。M$改变了信封中的某些东西,这就是问题所在

class MSSoapClient extends SoapClient {
   function __doRequest($request, $location, $action, $version) {
        $namespace = "http://tempuri.org/";

        $request = preg_replace('/<ns1:(\w+)/', '<$1 xmlns="'.$namespace.'"', $request, 1);
        $request = preg_replace('/<ns1:(\w+)/', '<$1', $request);
        $request = str_replace(array('/ns1:', 'xmlns:ns1="'.$namespace.'"'), array('/', ''), $request);        

        // parent call
        return parent::__doRequest($request, $location, $action, $version);
    }
}
类MSSoapClient扩展了SoapClient{
函数\uuu doRequest($request、$location、$action、$version){
$namespace=”http://tempuri.org/";

$request=preg_replace('/Hi)对于最初的询问者来说,这可能太晚了,但是对于任何可能有相同错误的人来说

这是我在使用M$.Net或C#(CVS)或任何其他风格的M$Soap服务器时学会的一个技巧…M$改变了信封中的某些内容,这就是问题所在

class MSSoapClient extends SoapClient {
   function __doRequest($request, $location, $action, $version) {
        $namespace = "http://tempuri.org/";

        $request = preg_replace('/<ns1:(\w+)/', '<$1 xmlns="'.$namespace.'"', $request, 1);
        $request = preg_replace('/<ns1:(\w+)/', '<$1', $request);
        $request = str_replace(array('/ns1:', 'xmlns:ns1="'.$namespace.'"'), array('/', ''), $request);        

        // parent call
        return parent::__doRequest($request, $location, $action, $version);
    }
}
类MSSoapClient扩展了SoapClient{
函数\uuu doRequest($request、$location、$action、$version){
$namespace=”http://tempuri.org/";

$request=preg_replace(“/这是一种很好的技术。我已经将它应用到我使用过的其他实例中了。谢谢!这是一种很好的技术。我已经将它应用到我使用过的其他实例中了。谢谢!那时我什么都不能说,但你不知道其中的一半。那时我什么都不能说,但你不知道其中的一半。