Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Неправильный запрос PHP SOAP

Автор вопроса: kockirenОтветов: 1

я пытаюсь построить следующий запрос SOAP:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <CheckSomething xmlns="http://service.mydomain.com/">
      <User>
        <username>user123</username>
        <password>geheim</password>
      </User>
      <ItemXY>something</ItemXY>
    </CheckSomething>
  </soap:Body>
</soap:Envelope>

Вот мой PHP-код

$soapClient = new SoapClient("http://service.mydomain.com/Services.asmx?wsdl",array( "trace" => 1 ));
$Param = array (
  'username' => "user123",
  'password' => "geheim"
);
$info = $soapClient->__call("CheckSomething", array("User" => $Param,"ItemXY" => "something"));
echo "Request :\n".htmlspecialchars($soapClient->__getLastRequest()) ."\n";

Результат:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://service.mydomain.com/">
<SOAP-ENV:Body>
<ns1:CheckSomething/>
<param1>something</param1>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Это раздел wsdl для этой службы:

<s:element name="CheckSomething">
  <s:complexType>
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="User" type="tns:Validation"/>
      <s:element minOccurs="0" maxOccurs="1" name="ItemXY" type="s:string"/>
    </s:sequence>
  </s:complexType>
</s:element>

Может ли кто-нибудь помочь мне сформировать правильный запрос SOAP?

Как удалить ns1 в теге результата, чтобы указать правильного пользователя массива и ItemXY?

  • похоже, вам нужно изменить файл wsdl s.webbandit 24.04.2012
  • я не могу получить доступ к файлу wsdl, этот файл исходит от клиента kockiren 24.04.2012
  • так что ваш запрос не выполняется? мыльный клиент должен нормально работать с SoapClient и предопределенным файлом WSDL. s.webbandit 25.04.2012
  • Я хочу создать запрос, подобный первому в моей теме, но получаю неправильный запрос от SOAP CLient. Пользовательской секции нет, и параметр param1 не является тегом с правильным именем. kockiren 25.04.2012
  • Я думаю, вас не должно волновать, как выглядит ваш запрос. Веб-сервисы созданы для того, чтобы не заботиться об этом. s.webbandit 25.04.2012
  • Проблема в том, что отпуск неправильный, поэтому служба не может обработать запрос. kockiren 26.04.2012

xmlhttprequestphpsoapsoap-client

Ответы

Ответ 1 · рейтинг 7 · kockiren

После того, как я изменю код PHP на:

$soapClient = new SoapClient("http://service.mydomain.com/Services.asmx?wsdl",array( "trace" => 1 ));
$user_param = array (
  'username' => "user123",
  'password' => "geheim"
);
$service_param = array (
  'User' => $user_param,
  "ItemXY" => "something"
);

$info = $soapClient->__call("CheckSomething", array($service_param));
echo "Request :\n".htmlspecialchars($soapClient->__getLastRequest()) ."\n";

оно работает!

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы