Как я могу включить WS-RM (версия 1.2) с клиентом NuSOAP - PullRequest
0 голосов
/ 13 мая 2018

Могу ли я включить WS-RM (версия 1.2) с клиентом NuSOAP, как показано ниже?Я пробовал это, но я не могу получить данные от API.Есть идеи?Спасибо.

$client = new nusoap_client($api_link, array('reliable' => 1.2 , 'useWSA' => TRUE) );

Полный код:

<code>try {
include_once 'WebServiceSOAP/lib/nusoap.php';

  $api_link = 'https://www.my-api.com/MYAPI.svc/SSL?wsdl';

  $acode = '###';

  $uname = '###';

  $ttype = '###';

  $ccode = '###';

  $hpass = '###';

  //setting xml request to api
  $credentials = '<soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/" xmlns:ezr="http://schemas.datacontract.org/2004/07/EzremitAPI.Entities">
                <soapenv:Header/>
                <soapenv:Body>
                   <tem:GetLocalRates>
                      <!--Optional:-->
                      <tem:credentials>
                         <!--Optional:-->
                         <ezr:AgentCode>'.$acode.'</ezr:AgentCode>
                         <!--Optional:-->
                         <ezr:HashedPassword>'.$hpass.'</ezr:HashedPassword>
                         <!--Optional:-->
                         <ezr:Username>'.$uname.'</ezr:Username>
                      </tem:credentials>
                      <!--Optional:-->
                      <tem:payincurcode>'.$ccode.'</tem:payincurcode>
                      <!--Optional:-->
                      <tem:transferType>'.$ttype.'</tem:transferType>
                   </tem:GetLocalRates>
                </soapenv:Body>
             </soapenv:Envelope>';
//creating soap object
$client = new nusoap_client($api_link, array('cache_wsdl' => WSDL_CACHE_NONE, 'soap_version' => SOAP_1_2) );

$client->soap_defencoding = 'UTF-8';

$soapaction = "http://tempuri.org/IRateAPI/GetLocalRates";

$xmlobjs = $client->send($credentials, $soapaction);

$err = $client->getError();
if ($err) {
    echo '<h2>Constructor error</h2><pre>' . $err . '
';выход();} // print_r ($ client);print_r ($ xmlobjs);} catch (Exception $ e) {echo $ e-> getMessage ();}?>

Я не очень хорош в PHP и SOAP.Над кодом может быть ошибки.Не могли бы вы проверить код и дать мне свои комментарии.Я сделал некоторые поправки после поиска в Google.

Кроме того, я могу запустить это на PHP 5.4.42?Когда я запускаю код выше, я получаю ошибку ниже.

Ошибка конструктора Ошибка HTTP: Неподдерживаемый статус ответа HTTP 415 Не удается обработать сообщение, так как тип содержимого 'text / xml;charset = UTF-8 'не был ожидаемым типом' application / soap + xml;кодировка = UTF-8' .(soapclient-> response содержит содержимое ответа)

1 Ответ

0 голосов
/ 24 мая 2018

Если кто-то ищет ответ на мой вопрос выше, я нашел решение с помощью @Marcel.

Ответ на вопрос:

Этот код неверен, не используйте его.

$client = new nusoap_client($api_link, array('reliable' => 1.2 , 'useWSA' => TRUE) );

Клиент NuSoap устарел и не устарелподдержка WS-RM.Мне пришлось использовать встроенное расширение PHP SOAP, чтобы мой проект работал.

Полный ответ здесь: Ошибка SOAP в PHP: OperationFormatter обнаружил недопустимое тело сообщения

Спасибо

...