Php Soap 1.2不使用stamps.com

Php Soap 1.2不使用stamps.com,php,soap,wsdl,Php,Soap,Wsdl,我无力地尝试在我的平台中实现stamps.com api接口。这是我第一次使用SOAP,我不得不重新编译PHP以启用库 我正在前进,但现在我遇到了一个问题。它们支持soap 1.1和soap 1.2请求,当我运行以下代码时: $client = new SOAPClient( './SWSIM.wsdl', array( 'trace' => 1 ) ); 在此之后,我从我的请求中得到了成功的响应 但是,如果我添加使用soap 1.2的选项,如下所

我无力地尝试在我的平台中实现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_版本是“修复它”的方法。我想使用SOAP1.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文件:

我还与他们的开发人员支持人员进行了联系,他们说: “您当前收到的消息是从您正在设计与之集成的任何程序返回的。这在Visual Basic中经常被注意到,其中is创建了一个需要特定变量作为响应的包装类。这可能与您正在经历的行为类似。请验证您的程序am语言使用WSDL。”


我还注意到uu soapCall方法不包含“input headers”参数。我甚至不能完全确定我是否应该/能够在代码中使用该方法。我想我应该试着使用它。

WSDL看起来不错,两个Soap版本的输入结构都相同。问题是在其末端的某个地方出现了一个bug,您必须与他们联系才能解决


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

检查您的WSDL文件。我用错了,看来你也一样。试试这个:


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

我知道这是一个旧线程,但下面是一个示例类,任何人都可以从php中的stamps.com api开始使用它

Soap 1.2有不同的输入结构(在WSDL中定义),或者提供程序不支持Soap 1.2。由于您尚未提供WSDL链接,我们无法帮助您进一步获得.TY的响应。我已经用WSDL的链接更新了这个问题。除此之外,您还可以通过访问此url并单击api函数来查看com示例。它显示了SOAP1.1和SOAP1.2的com示例。我正在做同样的事情,尝试使用AuthenticateUser方法,您能告诉我您发送post请求的url吗?对于我使用的产品(版本23对应于我的集成级别。这可能对您不同)-对于测试,我使用的是wdsl文件的本地副本。即(https://)在这一点上,我最终只是使用了soap 1.0调用,所以我无法验证这是否是问题所在,但去他妈的,我会将此作为答案,因为您有这个问题,并且能够修复它;)