我正在尝试在我的平台中实现一个 stamps.com api 接口。这是我第一次使用 SOAP,我不得不重新编译 PHP 以启用库。
我正在前进,但现在我遇到了问题。它们支持soap 1.1 和soap 1.2 请求,当我运行以下代码时:
$client = new SOAPClient(
'./SWSIM.wsdl',
array(
'trace' => 1
)
);
在此之后,我从我的请求中得到了成功的响应。
但是,如果我像这样添加使用soap 1.2的选项:
$client = new SOAPClient(
'./SWSIM.wsdl',
array(
'trace' => 1,
'soap_version' => SOAP_1_2
)
);
我收到以下错误:
There was an exception running the extensions specified in the config file. ---> Value cannot be null. Parameter name: input
这一行实际上并没有引发异常。它是抛出它的以下命令,但删除soap_version是“修复它”的原因。我想使用soap 1.2,所以这很自然地困扰着我。
FTR 我正在运行的命令是这样的:
$authData = array(
"Credentials" => array(
"IntegrationID" => "MYUID",
"Username" => "MYUSERNAME",
"Password" => "MYPASSWORD"
)
);
try {
$objectresult = $client->AuthenticateUser($authData);
} catch (Exception $e) {
echo "EXCEPTION: " . $e->getMessage();
print_r($e);
exit;
}
可以在此处查看 WSDL 文件: https ://swsim.stamps.com/swsim/swsimv22.asmx?wsdl
我还联系了他们的开发人员支持,他们说:“您当前收到的消息是从您设计集成的任何程序返回的。这通常发生在 Visual Basic 中,它创建了一个需要特定的包装类响应变量。这可能类似于您遇到的行为。请验证您的程序语言如何使用 WSDL。
我还注意到 __soapCall 方法除了“输入标头”参数。我不完全确定我应该/甚至可以在我的代码中使用该方法。我想我应该试着玩一下。