PHP-Sabun geçiş yöntemi parametrelerinin

3 Cevap php

Ben SOAP ile nispeten hiçbir deneyimim var. WSDL modunu kullanarak bir müşteri için bir webcoder ile çalışmaya çalışıyorum Im. Ben sorun yöntemi ile parametreleri geçirerek ve onları gerektiği gibi istek göstermek için parametreleri gelmek için alıyorum yaşıyorum. Ben standart php sabun sınıfını kullanıyorum.

Benim SOAP isteği aşağıdaki gibi yapılandırılmış olması gerekir:

 <?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://hostserver/">
    <SOAP-ENV:Body>
        <ns1:DoLogin>
            <ns1:request>
                <ns1:Session>
                    <ns1:SessionId>00000000-0000-0000-0000-000000000000</ns1:SessionId>
                </ns1:Session>
                <ns1:UserCredential>
                    <ns1:UserName>username</ns1:UserName>
                    <ns1:Password>password</ns1:Password>
                    <ns1:ApplicationID>00000000-0000-0000-0000-000000000000</ns1:ApplicationID>
                    <ns1:ClientID>00000000-0000-0000-0000-000000000000</ns1:ClientID>
                    <ns1:ClientVersion>V1.0</ns1:ClientVersion>
                </ns1:UserCredential>
            </ns1:request>
        </ns1:DoLogin>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Php yüzden gibi işlevini çağırır:

$client->DoLogin($args);

Ve isteği bu gibi biter:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://hostserver/"><SOAP-ENV:Body><ns1:DoLogin/></SOAP-ENV:Body></SOAP-ENV:Envelope>

Ne olursa olsun ben args (tek varabiables, dizi, sınıf nesne) geçmek nasıl bu kadar yapıya sahip olması isteği alınamıyor.

Herkes bana yardımcı olabilir misiniz? Ben onun oldukça basit bir şey olacak eminim.

3 Cevap

Bugün biraz ilgili sorun üzerinde çalışırken, ben şu PHP aşağıda gösterilen soap isteği üretilen bulundu:

$sc = new SoapClient($url);
$params = array('step' => 'ShippingInfo', 'value' => "hello");
$result = $sc->__soapCall('runStep', array('parameters' => $params));

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/">
 <SOAP-ENV:Body>
  <ns1:runStep>
     <ns1:step>ShippingInfo</ns1:step>
     <ns1:value>hello</ns1:value>
  </ns1:runStep>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Vücut içeren bir mesajın - Buldum bir catch ben geçti parametreleri ($ params) WSDL dosyasında belirtilen ne uygun olmasaydı, SOAP istemci oluşturulan mesaj şikayet ne benzer olmasıydı Hiçbir veri değeri. Lütfen sorun burada yatıyor acaba.

Ayrıca, yukarıdaki PHP parametreleri geçirmek için iki diziyi nasıl kullandığını unutmayın. İlk dizi parametreleri ve isimlerini içermektedir. İkinci ilk dizi içerir. İlginç sözdizimi, biliyorum. :-)

Bilginize, aşağıdaki sözleşme sahip bir C # Net WCF hizmeti ile iletişim kurmak için kullanılan Yukarıdaki örnek kod.:

[OperationContract]
string runStep(string step, string value);

Bu deneyin:

$soapClient->__soapCall('methodToCall', array('parameters' => $yourParamsArray));

Bu bir. NET webcoder benim için çalıştı.

Bu deneyin,

$client->__soapCall('methodName',array('requestObj'=>$requestObj));