1

我正在尝试在我的平台中实现一个 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 方法除了“输入标头”参数。我不完全确定我应该/甚至可以在我的代码中使用该方法。我想我应该试着玩一下。

4

3 回答 3

2

检查您的 WSDL 文件。我用错了,看来你也是。试试这个:http: //developer.stamps.com/developer/downloads/files/Stamps.com_SWSIM.wsdl

注意:以上内容已过时。联系 stamps.com 获取当前的 wsdl!

于 2012-08-20T20:48:35.097 回答
1

我知道这是一个旧线程,但这是一个示例类,应该让任何人开始使用 php https://github.com/aaronjsmith/stamps.com-php中的 stamps.com api

于 2014-10-29T15:49:32.603 回答
0

WSDL 看起来不错,并且对于两个 Soap 版本来说它是相同的输入结构。问题是他们最后的某个地方的错误,你必须联系他们来解决。

我还将通过 .NET 应用程序对其进行测试,以查看其行为是否相同。

于 2012-05-31T06:19:39.903 回答