Итак, что я пытаюсь сделать в нашей корпоративной среде, это подключиться к веб -службе SAP, используя PHP Class SoapClient в режиме WSDL. После устранения всех отсутствующих ошибок свойств я получаю страшную http error 500 с корпусом: SOAP-ENV: Server < /p>
Так что это мой код: < /p>
class SapTest {
const SAP_WSDL_URI = *wsdl_uri*;
const SAP_USER = *username*;
const SAP_PWD = *password*;
public function execute() {
$client = new SoapClient('http://'.urlencode(self::SAP_USER).':'.urldecode(self::SAP_PWD).'@'.self::SAP_WSDL_URI,
array("trace" => 1,
"exceptions" => 1,
"login" => self::SAP_USER,
"password" => self::SAP_PWD,
'features' => SOAP_SINGLE_ELEMENT_ARRAYS)
);
$method = '_-bic_-nf2';
$parameter = array('ETColumnDescription' => null,
'ETGridData' => null,
'ETMessageLog' => null,
'ETRowDescription' => null,
'ISVar_01xwerbet' => array('Sign' => 'I',
'Option' => 'LE',
'Low' => '3',
'High' => null));
try
{
$result = $client->$method($parameter);
print_r($result);
} catch(SoapFault $e) {
echo "REQUEST HEADER:\n" . $client->__getLastRequestHeaders() . "\n";
echo "REQUEST:\n" . $client->__getLastRequest() . "\n";
echo "RESPONSE HEADER:\n" . $client->__getLastResponseHeaders() . "\n";
echo "RESPONSE:\n" . $client->__getLastResponse() . "\n";
print_r($e);
}
}
}
$oSap = new SapTest();
$oSap->execute();
< /code>
Мой вывод XML выглядит следующим образом: < /p>
I
LE
3
< /code>
Ожидаемый XML должен выглядеть следующим образом: < /p>
I
LE
3
< /code>
Я не уверен, является ли это отсутствующим пустым тегом заголовка, который я не могу, кажется, добавлю с базовым PHP (я могу добавить заголовок, но добавление пустого заголовка кажется сложной частью). Или, если это различные префиксы (NS1/URN или SOOMENV/SOAP-ENV), но я начинаю сходить с ума по этому поводу. Помощь была бы очень оценена. < /P>
Заранее! < /P>
Подробнее здесь: https://stackoverflow.com/questions/166 ... eb-service