преобразование сложного XML-запроса soap в массив php для передачи его в качестве параметра в nusoap_client - PullRequest
0 голосов
/ 16 мая 2018

Я пишу php-скрипт для вызова мыльного веб-сервиса, написанного на java. До этого я вызывал сервис с использованием мыльного интерфейса пользователя с xml-запросом, и он работал. Но когда я пытаюсь вызвать сервис из php, он выдаетошибка, поскольку он не может преобразовать запрос в правильный объект Java. XML-запрос:

<?xml version="1.0"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v3="http:///services/common/commondf/v3/" xmlns:inp="http://..confidential.../input/">
   <soapenv:Header>
      <v3:Info>
         <requestId>Sample</requestId>
      </v3:Info>
   </soapenv:Header>
   <soapenv:Body>
      <m:Input xmlns:m="http://../conf/ident/ial/../input/">
         <a>
            <b>
               <scheme>123</scheme>
               <value>aaa</value>
            </b>
            <c>
               <date>2018-04-09</date>
               <e>
                  <scheme>1234</scheme>
                  <value>bbb</value>
               </e>
            </c>
            <f>
               <scheme>seniority type</scheme>
               <value>ccccccct</value>
            </f>
            <g>....
...........................
.........................
      </m:Input>
   </soapenv:Body>
</soapenv:Envelope>

xml слишком большой и сложный, поэтому я не могу продолжать преобразовывать его объект массива xml по объекту.я использовал simple_xml_load_string, как показано ниже:

$xml= file_get_contents('test.xml');
$xml_array =  simplexml_load_string($xml);
$array = json_decode(json_encode($xml), true);
try {           
$wsdl='http://localhost/service?wsdl';      
require_once('nusoap.php');
$endpoint = "http://localhost/service";

$mynamespace = "http://something/input/";
$client = new nusoap_client($endpoint);
$err = $client->getError();
if ($err) 
{
   echo  $err;
}
$response = $client->call('Input', $array , $mynamespace);
print_r($response);
}catch(Exception $e){
    var_dump($e->getMessage());
}

когда я нажимаю эту ошибку, я получаю

Array ([код ошибки] => soap: Client [faultstring] =>Проблемы с созданием объектной модели SAAJ)

В моем мыльном приложении вызывающая функция определена следующим образом:

java method:
    public output inputDetails(Input input) throws someException 
    {
            ----logic-----
    }

, так что в основном то, что я считаю объектом ввода, не передается вметод правильно, что означает некоторую проблему в массиве php $ array. Как преобразовать сложный xml, используемый в soap ui, в массив php, чтобы он должным образом конвертировался в объект Java .. или какая-то другая проблема?Может кто-нибудь, пожалуйста, помогите.

...