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(“/这是一种很好的技术。我已经将它应用到我使用过的其他实例中了。谢谢!这是一种很好的技术。我已经将它应用到我使用过的其他实例中了。谢谢!那时我什么都不能说,但你不知道其中的一半。那时我什么都不能说,但你不知道其中的一半。