Атрибуты PHP SOAP .NET Web Service - PullRequest
2 голосов
/ 06 января 2011

Я провел хорошую неделю в поисках ответа, который я могу понять.Я довольно новичок в мире веб-разработки.

Моя проблема заключается в создании мыльного сообщения, которое требует установки значений в атрибутах и ​​самих элементах.

Вот упрощенныйпример сообщения SOAP, которое я пытаюсь создать.

Клиент = PHP
Сервер = .NET

Требуется сообщение SOAP:

 <PingRequest EchoToken="string">
      <EchoData>string</EchoData>
 </PingRequest>

Часть WSDL

  <s:element name="PingRequest" type="s0:PingRequest" />
  <s:complexType name="PingRequest">
    <s:sequence>
      <s:element minOccurs="0" maxOccurs="1" name="EchoData" type="s:string" />
    </s:sequence>
    <s:attribute name="EchoToken" type="s:string" />
  </s:complexType>

Я потратил много времени, пытаясь понять, как заставить класс и другие объекты передаваться в веб-службу, однако мой мозг меня подводит.Извиняюсь, если мой вопрос немного неясен.Вот моя попытка вызвать мой веб-сервис:

<code>    <?php
    //connection to wsdl
    $client = new SoapClient('http://localhost/ws.asmx?wsdl',
                array(  "trace"          => 1,
                        "exceptions"     => 0
                ));

    try {
        // Ping = Function
        // PingRequest = method?
        $result = $client->PingRequest(array('EchoData' => 'moo'));

    } catch (SOAPFAULT $f){
    }

    echo "\n The Result: \n";
    print_r($result);

    print "<pre>";
    print "Request :\n".htmlspecialchars($client->__getLastRequest()) ."\n";
    print "Response:\n".htmlspecialchars($client->__getLastResponse())."\n";
    print "
";;>> 1018 *

Запрос:

<ns1:PingRequest>
   <ns1:EchoData>moo</ns1:EchoData>
</ns1:PingRequest>

Любая помощь - палец вверх.

РЕДАКТИРОВАТЬ: благодаря Лизе: я смог создать класс для этого: но я все еще не понимаю,

class PingRequest {
  public $EchoData; // string
  public $EchoToken; // string
  public $TimeStamp; // dateTime
  public $Target; // PingTarget
  public $Version; // decimal
  public $TransactionIdentifier; // string
  public $SequenceNmbr; // nonNegativeInteger
  public $TransactionStatusCode; // PingRequestStatusCode
  public $RetransmissionIndicator; // boolean
}

сделал это очень легко. Спасибо

создайте новую переменную класса с именем класса webservice, а затем создайте ваши stdclasses для каждого элемента или атрибута, который вы хотите передать. (Необходимо использовать предоставленный lisa генератор классов.

1 Ответ

2 голосов
/ 06 января 2011

Вам нужно сгенерировать классы php из файла wsdl. http://www.urdalen.no/wsdl2php/index.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...