SOAP 请求适用于 Postman,不适用于 PHP
SOAP Request works with Postman, not in PHP
我正在尝试调用斯洛伐克 post 办公室通过 SOAP 提供的功能。
他们在 https://mojezasielky.posta.sk/integration/webServices/api?wsdl
上发布了他们的 WSDL
我已经注册并成功使用了他们的服务,方法是创建一个通过 Postman 发送的 XML。尽管我在 PHP 中遇到问题 - 它总是 returns 一个错误,指出未找到用户,这没有意义(错误是 SOAP-ENV:Server user_not_found).
在 php 中,我试图这样称呼它(不起作用):
$params = array(
'apiKey' => "123abc",
'userId' => "abc123",
'EPH' => $ephString // the long XML specified later in the question. I know I should use objects, this is just for testing purposes
);
try {
$wsdl = 'https://mojezasielky.posta.sk/integration/webServices/api';
$client = new SoapClient($wsdl, $params);
$requestResponse = ($client->__soapCall("importSheet", $params));
echo $requestResponse;
} catch (SoapFault $exception) {
echo $exception;
}
这是我的XML请求(不要介意评论,它只是解释具体值是什么)
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<importSheetRequest xmlns="http://mojezasielky.posta.sk/api">
<auth>
<userId>idOfUserAcc</userId>
<apiKey>theSuperSecretAPiKey</apiKey>
</auth>
<EPH>
<InfoEPH>
<Mena>EUR</Mena>
<TypEPH>1</TypEPH> <!-- 1 = EPH - vzdy sa zadava len cislo 1 pri podaji -->
<PocetZasielok>1</PocetZasielok> <!-- Tu tiez necham cislo 1, vzdy budem po jednom podavat-->
<DruhZasielky>1</DruhZasielky> <!-- 1 doporuceny, 2 poisteny, 8 expres kurier, 15 easy express 1, 16 easy express 10, pozor, pre nemecko nesmie byt poisteny! -->
<Odosielatel>
<OdosielatelID />
<Meno>Name Surname</Meno>
<Organizacia>Company s.r.o.</Organizacia>
<Ulica>Narodna 1</Ulica>
<Mesto>Bratislava</Mesto>
<PSC>85101</PSC>
<Krajina>SK</Krajina>
<Email>me@notyou.com</Email>
</Odosielatel>
</InfoEPH>
<Zasielky>
<Zasielka>
<Adresat>
<Meno>zahranicie test bez cislo uctu</Meno>
<Organizacia /> <!-- povinna len ak je vyplnene meno + moze ostat prazdna -->
<Ulica>cokolvek</Ulica>
<Mesto>hocico</Mesto>
<PSC>10000</PSC>
<Krajina>DE</Krajina> <!-- 2znakovy iso kod -->
</Adresat>
<Info>
<CenaPoistneho>100</CenaPoistneho>
</Info>
</Zasielka>
</Zasielky>
</EPH>
</importSheetRequest>
</Body>
</Envelope>
Postman headers 配置(适用于指定的 XML)
我应该如何使用 PHPs soap 客户端使其工作?
您的参数有误(auth
节点应包含 userId
和 apiKey
)。尝试以下操作:
$wsdl = 'https://mojezasielky.posta.sk/integration/webServices/api?wsdl';
$args = [
'auth' => [
'userId' => 'YOUR_SECRET_ID',
'apiKey' => 'YOUR_SECRET_KEY',
],
'EPH' => $ephString,
'contract' => false,
];
$soap = new SoapClient($wsdl);
$response = $soap->importSheet($args);
我正在尝试调用斯洛伐克 post 办公室通过 SOAP 提供的功能。
他们在 https://mojezasielky.posta.sk/integration/webServices/api?wsdl
上发布了他们的 WSDL我已经注册并成功使用了他们的服务,方法是创建一个通过 Postman 发送的 XML。尽管我在 PHP 中遇到问题 - 它总是 returns 一个错误,指出未找到用户,这没有意义(错误是 SOAP-ENV:Server user_not_found).
在 php 中,我试图这样称呼它(不起作用):
$params = array(
'apiKey' => "123abc",
'userId' => "abc123",
'EPH' => $ephString // the long XML specified later in the question. I know I should use objects, this is just for testing purposes
);
try {
$wsdl = 'https://mojezasielky.posta.sk/integration/webServices/api';
$client = new SoapClient($wsdl, $params);
$requestResponse = ($client->__soapCall("importSheet", $params));
echo $requestResponse;
} catch (SoapFault $exception) {
echo $exception;
}
这是我的XML请求(不要介意评论,它只是解释具体值是什么)
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<importSheetRequest xmlns="http://mojezasielky.posta.sk/api">
<auth>
<userId>idOfUserAcc</userId>
<apiKey>theSuperSecretAPiKey</apiKey>
</auth>
<EPH>
<InfoEPH>
<Mena>EUR</Mena>
<TypEPH>1</TypEPH> <!-- 1 = EPH - vzdy sa zadava len cislo 1 pri podaji -->
<PocetZasielok>1</PocetZasielok> <!-- Tu tiez necham cislo 1, vzdy budem po jednom podavat-->
<DruhZasielky>1</DruhZasielky> <!-- 1 doporuceny, 2 poisteny, 8 expres kurier, 15 easy express 1, 16 easy express 10, pozor, pre nemecko nesmie byt poisteny! -->
<Odosielatel>
<OdosielatelID />
<Meno>Name Surname</Meno>
<Organizacia>Company s.r.o.</Organizacia>
<Ulica>Narodna 1</Ulica>
<Mesto>Bratislava</Mesto>
<PSC>85101</PSC>
<Krajina>SK</Krajina>
<Email>me@notyou.com</Email>
</Odosielatel>
</InfoEPH>
<Zasielky>
<Zasielka>
<Adresat>
<Meno>zahranicie test bez cislo uctu</Meno>
<Organizacia /> <!-- povinna len ak je vyplnene meno + moze ostat prazdna -->
<Ulica>cokolvek</Ulica>
<Mesto>hocico</Mesto>
<PSC>10000</PSC>
<Krajina>DE</Krajina> <!-- 2znakovy iso kod -->
</Adresat>
<Info>
<CenaPoistneho>100</CenaPoistneho>
</Info>
</Zasielka>
</Zasielky>
</EPH>
</importSheetRequest>
</Body>
</Envelope>
Postman headers 配置(适用于指定的 XML)
我应该如何使用 PHPs soap 客户端使其工作?
您的参数有误(auth
节点应包含 userId
和 apiKey
)。尝试以下操作:
$wsdl = 'https://mojezasielky.posta.sk/integration/webServices/api?wsdl';
$args = [
'auth' => [
'userId' => 'YOUR_SECRET_ID',
'apiKey' => 'YOUR_SECRET_KEY',
],
'EPH' => $ephString,
'contract' => false,
];
$soap = new SoapClient($wsdl);
$response = $soap->importSheet($args);