SOAP-запрос через PHP

Я попытался создать запрос для SOAP wsdl, запрос и ответ на запрос:

SOAP-запрос:

<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope" xmlns:sub = "http://subscriberprovisioning.ws.nvsmx.domain.com/">
<soap:Header/><soap:Body>
<sub:wsGetSubscriberProfileByID><subscriberID>123456789</subscriberID><alternateID></alternateID><parameter1></parameter1><parameter2></parameter2>
</sub:wsGetSubscriberProfileByID></soap:Body></soap:Envelope>

Ответ

<soap:Envelope xmlns:soap = "http://www.w3.org/2003/05/soap-envelope"><soap:Body><ns2:wsGetSubscriberProfileByIDResponse xmlns:ns2 = "http://subscriberprovisioning.ws.nvsmx.domain.com/">
<return><responseCode>200</responseCode><responseMessage>SUCCESS</responseMessage><subscriberProfile>
<entry><key>SUBSCRIBER_IDENTITY</key><value>123456789</value></entry>
</subscriberProfile></return></ns2:wsGetSubscriberProfileByIDResponse></soap:Body></soap:Envelope>

Я использую php для создания запроса, код выглядит следующим образом:

запрос.php

<?php

$client = new SoapClient("http://ipnumber:1988/services/Subscriber?wsdl"); 





$param = array('subscriberId' => '123456789');
$response = $client->wsGetSubscriberProfileByID    ($param);

var_dump($response);

в приведенном выше коде 'subscriberId' => '123456789' не передается в wsdl, и я получил ответ с отсутствующим параметром. Я также тестировал с использованием пользовательского интерфейса SOAP, и он работает. Любое предложение для моего php-кода.

Спасибо

Ваши строки кода кажутся удвоенными и в неправильном порядке. Начните с удаления двойников и расставьте строки в правильном порядке.

KIKO Software 10.04.2019 09:00

Привет @KIKOSoftware, спасибо за ответ, можно подробнее?

Bireon 10.04.2019 09:08

Вам нужен только 1 SoapClient, а не 2. Первый $soapclient->wsGetSubscriberProfileByID(), похоже, не используется и имеет неопределенный аргумент. Это вполне очевидные недочеты в коде. Если вы их не видите, создание SOAP-запроса может оказаться для вас слишком сложной задачей.

KIKO Software 10.04.2019 09:12

Привет, @KIKOSoftware, я уже пытаюсь использовать только один SoapClient $client, прежде чем спрашивать здесь, и сразу же позвонил $client->wsGetSubscriberProfileByID() Я отредактировал свой код, о котором идет речь, в коде без двойного soapclient

Bireon 10.04.2019 09:15

Что ж, так лучше выглядит. Есть ли какая-либо документация для этого запроса SOAP? Очевидно, вам не хватает параметра, документация может сказать вам, какими они должны быть.

KIKO Software 10.04.2019 09:25

Я не уверен, но я буду просить. Но когда я попытался использовать SOAPUI, он работает хорошо, и я думаю, что $param = array('subscriberId' => '123456789'); это не переходит в wsdl. Спасибо @KIKOSoftware

Bireon 10.04.2019 09:34

Другими словами: что работает на вашем локальном хосте, порт 1988?

KIKO Software 10.04.2019 09:51

На самом деле это не локальный хост, это IP-адрес SOAP-сервера.

Bireon 10.04.2019 10:14

Ах, это сбивало с толку. Да, «ipnumber» лучше, чем «127.0.0.1».

KIKO Software 10.04.2019 10:19
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
9
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наконец, он заработал в этом коде:

try{
$soapclient = new SoapClient('http://ipnumber:1988//services/Subscriber?wsdl');
$param=array('subscriberID'=>'123456789');
$response =$soapclient->wsGetSubscriberProfileByID($param);
var_dump($response);
echo '<br><br><br>';
$array = json_decode(json_encode($response), true);
print_r($array);
 echo '<br><br><br>';
      echo '<br><br><br>';
    foreach($array as $item) {
        echo '<pre>'; var_dump($item);
    }  
}catch(Exception $e){
    echo $e->getMessage();
}

Другие вопросы по теме