I this WSDL kullanarak bir bülten servisine bir SOAP isteği göndermek için çalışıyorum.
İşte benim PHP bulunuyor:
$client = new SoapClient($wsdl_url, array(
'login' => 'myusername',
'password' => 'mypassword',
'trace' => true
));
$client->AddSubscriber(
new SoapParam('MyFirstName', 'FirstName'),
new SoapParam('MyLastName', 'LastName'),
new SoapParam('myemail@someaddress.com', 'Email')
);
Ben özel durum alıyorum:
End element 'Body' from namespace 'schemas.xmlsoap.org/soap/envelope/' expected. Found element 'LastName' from namespace ''. Line 2, position 156.
Burada hizmet AddSubscriber için bekliyor ne:
<?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="schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<AuthHeader xmlns="admin.ekeryx.com">
<Username>string</Username>
<Password>string</Password>
<AccountID>string</AccountID>
</AuthHeader>
</soap:Header>
<soap:Body>
<AddSubscriber xmlns="admin.ekeryx.com">
<subscriber>
<ID>string</ID>
<FirstName>string</FirstName>
<LastName>string</LastName>
<Email>string</Email>
</subscriber>
<overwritable>boolean</overwritable>
</AddSubscriber>
</soap:Body>
</soap:Envelope>
İşte gönderilen buydu:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="tempuri.org/">
<SOAP-ENV:Body>
<ns1:AddSubscriber/>
<LastName>MyLastName</LastName>
<Email>myemail@someaddress.com</Email>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Ben SOAP ile çok bildik değilim, ve ben her yerde belgelerine arıyordum ettik, ama ben ne yapıyorum için çok iyi bir referans bulmak için görünmüyor olabilir.
Herhangi bir rehberlik çok duyacağız!
Teşekkürler. Bana bir örnek verebilir misiniz? Ben gösterir PHP sitede örnek bakıyorum:
<?php
class SOAPStruct {
function SOAPStruct($s, $i, $f)
{
$this->varString = $s;
$this->varInt = $i;
$this->varFloat = $f;
}
}
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
'uri' => "http://test-uri/"));
$struct = new SOAPStruct('arg', 34, 325.325);
$soapstruct = new SoapVar($struct, SOAP_ENC_OBJECT, "SOAPStruct", "http://soapinterop.org/xsd");
$client->echoStruct(new SoapParam($soapstruct, "inputStruct"));
?>
Eğer ben, bir abone PHP sınıf oluşturmak zorunda vb tüm değişkenler $this->FirstName = $first_name
, atamak .. ve daha sonra kodlama ile bir SoapVar içinde vereceğini söyleyerek SOAP_ENC_OBJECT
? Nasıl daha iyi abone yapısını temsil edebilir?