Я провел хорошую неделю в поисках ответа, который я могу понять.Я довольно новичок в мире веб-разработки.
Моя проблема заключается в создании мыльного сообщения, которое требует установки значений в атрибутах и самих элементах.
Вот упрощенныйпример сообщения 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 генератор классов.