gpt4 book ai didi

PHP SOAP xml 与 SoapUI xml

转载 作者:行者123 更新时间:2023-12-04 16:51:22 24 4
gpt4 key购买 nike

我有一个可用的 SOAP UI xml,我有我的 SOAP 请求 XML,它们几乎相同。 SOAP UI 工作,我的得到一个空响应。首先是 SOAPUI XML

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:get="http://www.cornerstoneondemand.com/Webservices/GetDetailsWebService">
<soapenv:Header>
<get:AuthHeader>
<get:CorpName>corp</get:CorpName>
<get:UserId>1234</get:UserId>
<get:Signature>ABC123</get:Signature>
</get:AuthHeader>
</soapenv:Header>
<soapenv:Body>
<get:GetDetails xmlns:get="http://www.cornerstoneondemand.com/Webservices/GetDetailsWebService">
<get:object_id>qwerty-123</get:object_id>
</get:GetDetails>
</soapenv:Body>
</soapenv:Envelope>

这是我的 PHP 代码和请求。
$client=new SoapClient($wsdl,array('trace' => 1, 'exception' => 0));

$auth = array(
'CorpName' => $CorpName,
'UserId' => $username,
'Signature' => $Signature
);
$header = new SoapHeader('http://www.cornerstoneondemand.com/Webservices/GetDetailsWebService','AuthHeader',$auth,false);
$client->__setSoapHeaders($header);

$parm[] = new SoapVar($LOid, XSD_STRING, null, null, 'object_id' );


var_dump($client->GetDetails( new SoapVar($parm, SOAP_ENC_OBJECT) )); //output is NULL

//和PHP请求:

print_r($client->__getLastRequest());
输出是
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.cornerstoneondemand.com/Webservices/GetDetailsWebService">
<SOAP-ENV:Header>
<ns1:AuthHeader>
<ns1:CorpName>corp</ns1:CorpName>
<ns1:UserId>1234</ns1:UserId>
<ns1:Signature>ABC123</ns1:Signature>
</ns1:AuthHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:GetDetails>
<object_id>qwerty-123</object_id>
</ns1:GetDetails>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我不知道我是快要提出一个好的请求,还是差远了。我正在努力使 PHP 请求与 SOAPUI 匹配,因为它有效而我的无效。

最佳答案

包含几乎相同的信息。元素节点的命名空间前缀是可交换的和可选的。因此,所有这 3 个变体都被解析为具有本地名称 Envelope 的元素节点。在命名空间 http://schemas.xmlsoap.org/soap/envelope/ .

  • <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"/>
  • <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/>
  • <Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/"/>

  • 您可以将元素名称读作 {http://schemas.xmlsoap.org/soap/envelope/}:Envelope .
    get 也是如此对比 ns1命名空间前缀。它们都解析为相同的实际命名空间。

    但是元素 object_id在您的 XML 中没有命名空间。 SoapVar的第六个参数构造函数是节点命名空间,所以你可能想尝试:
    $namespace = 'http://www.cornerstoneondemand.com/Webservices/GetDetailsWebService';
    $parm[] = new SoapVar($LOid, XSD_STRING, null, null, 'object_id', $namespace);

    关于PHP SOAP xml 与 SoapUI xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40661358/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com