gpt4 book ai didi

php - 总是在 soap 客户端 php 中收到作为无效 session token 的响应

转载 作者:搜寻专家 更新时间:2023-10-31 21:50:57 25 4
gpt4 key购买 nike

我的本​​地主机上有 php 7.1 版。我已更改我的 php.ini 文件以从我的本地主机运行 SOAP。

我需要通过将登录 ID 和密码传递给 SOAP 客户端 API 来生成主要和次要 session token 。

一旦 session token 通过身份验证,它将返回一些费率图表。我的代码正在生成 session token 。但是当我将该 token key 传递给 SOAP 客户端 api 中的下一个方法时,它总是给我一个错误,如“无效 session token ”或“无效身份验证”。然而,相同的标记在 SOAP UI exe 中运行良好。我的意思是我已经安装了 SOAP UI exe 并使用 wsdl“http://cnx.test.dat.com:9280/wsdl/TfmiFreightMatching.wsdl”并使用方法“Login”和“LookupRate”,一切正常。我需要的方式。

但是每当我在 php localhost 中使用该 token 时,它总是通过 SOAP 客户端给我一个身份验证错误。

我在下面分享我的代码。

$wsdl = "http://cnx.test.dat.com:9280/wsdl/TfmiFreightMatching.wsdl";

$client = new SoapClient($wsdl, array('trace' => true));
$params = array('loginOperation'=>array('loginId'=>'ryder_cnx1','password'=>'ryder1','thirdPartyId'=>'dl'));

$client->Login($params);

$data = $client->__getLastResponse();

$p = xml_parser_create();
xml_parse_into_struct($p, $data, $vals, $index);
xml_parser_free($p);

$token = [];

foreach ($vals as $key => $value) {
foreach ($value as $key1 => $value1) {
if($key1 == "value")
$token[] = $value1;
}
}

echo "Primary Token = ".$token[0];
echo "<br> Secondary Token = ".$token[1];
//echo "<br> Expiry Date = ".$token[2];

$params_session = array("sessionToken"=> array("primary"=>$token[0], "secondary"=>$token[1]));

$namespace = 'http://www.tcore.com/TcoreTypes.xsd'; // I am not sure about this namespace. Whether its correct or not.

$header = new SoapHeader($namespace,'sessionHeader',$params_session,true);
$client->__setSoapHeaders($header);

$params_data = array('lookupRateOperations'=> array(
'equipment'=>'Vans',
'origin'=>array('postalCode'=>array('country'=>'US','code'=>'30004')),
'destination'=>array('postalCode'=>array('country'=>'US','code'=>'10001'))
));

try{
$result = $client->LookupRate($params_data);

print_r($result);

}catch (SoapFault $exception){
//or any other handling you like
print_r(get_class($exception));
enter code hereprint_r($exception);
}

如果有人有任何想法,请与我分享。

等待任何回复。

提前致谢:)

最佳答案

我知道这已经很老了,很可能是 OP 弄明白了。但如果有其他人出现,我可以通过两个细微的更改让它正常工作。

首先,

$namespace = 'http://www.tcore.com/TcoreTypes.xsd';

应该是

$namespace = 'http://www.tcore.com/TcoreHeaders.xsd';

其次,

$params_session = array("sessionToken"=> array("primary"=>$token[0], "secondary"=>$token[1]));

应该是

$params_session = array(
"sessionToken"=> array(
"primary"=>base64_decode($token[0]),
"secondary"=>base64_decode($token[1])
)
);

我的其余代码非常相似,如果进行了上述更改,它应该可以工作。顺便说一句,我也不会发布真实的用户名和密码。

关于php - 总是在 soap 客户端 php 中收到作为无效 session token 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42436395/

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