PHP süreç SABUN Başlıkları

1 Cevap php

Ben (PHP) Bu gibi bakmak mesajları kabul etmek onun WSDL tarafından yapılandırılmış bir SOAP sunucusu inşa ediyorum:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://my.awesome.namespace/">
    <SOAP-ENV:Header>
        <ns1:Header>
            <ns1:APIKey>E4C5BDE0-48DC-543C-1CA3-8E55C63F8E60</ns1:APIKey>
            <ns1:SiteID>111</ns1:SiteID>
        </ns1:Header>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <ns1:Heartbeat>
            <ns1:Message>Hello world.</ns1:Message>
        </ns1:Heartbeat>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Benim SoapServer Heartbeat mesajları işlemek için elde hiçbir sorun vardı - $server->addFunction("Heartbeat"); çalışıyor. Ben <ns1:Header> muhafazanın içeriğini işleyebilmek için, ancak, istiyorum - bu yüzden emin onlar gereken ne yapmak için API anahtarı ve Site kimliğini doğrulamak.

Ben, here baktı (ve tabii başka) ama cevap sorunun noktasını kaçırmış görünüyor. Herkes başlık elemanı doğrulamak için erişebilir nasıl biliyor mu? Ben Üstbilgi için bir işlevini ben vücutta bir yöntem olur yolu eklerim? ($server->addFunction("Header");?)

Çok şimdiden teşekkür ederiz.

1 Cevap

Buldum! İşte yapmanız gerekenler var.

SOAP sunucusu oluşturmak:

$server = new SoapServer($your_wsdl,$any_options);
$server->setClass($name_of_your_class);
$server->handle($location_of_request_data);

$name_of_your_class adlı sınıfı, $your_wsdl tanımlanan her hizmet için fonksiyonları içeren ek olarak, aynı zamanda sizin <SOAP-ENV:Header> etiketi var ne için adında bir işlev içermelidir muhafaza. I-<ns1:Header>, bu nedenle zaman fonksiyonu Header adlandırılır var. Orada ihtiyacınız ne olursa olsun mantığı koydu. Benim için, ben API anahtarı ve site kimliğini doğrulamak istiyordu, bu yüzden özel bir değişken oluşturulur ve API anahtarı ve site kimliği doğruysa, değişken ayarlanmış true. Sınıf kontrol diğer tüm fonksiyonları bu değişken devam etmeden önce doğru olup olmadığını görmek için, ve değilse, bir SOAPFault atılır.

Bu Google'da bu soru karşısında geliyor herkes yardımcı olur umarım.

PS: $server->setClass() tanımlanan sınıfında işlevleri için, onlar WSDL tanımlanan sırayla argümanlarını kabul gerektiğini unutmayın. Bu beni takıldı.

Diğer tüm PHP / SOAP geliştiricileri için iyi şanslar - Hepimizin ihtiyacı gibi görünüyor.

Düzenleme / PPS: - Ben ilk yukarıda setClass yaklaşım denedi önce denedim Sebebi ne olursa olsun, sadece $server->addFunction("Header") benim için işe yaramadı çağırıyor. Millet sadece bir heads-up.