PHP Sabun Server Toplama / İşleme başlıkları

3 Cevap php

Ben php5 yerli SABUN yöntemleri kullanarak bir web hizmeti oluşturma. Ben SOAP üstbilgileri kullanarak kimlik doğrulama işlemek için çalıştı kadar her şey yolunda gitti.

Ben kolayca SOAP üstbilgileri kullanıcı adı / şifre eklemek için nasıl bulabiliriz, client-side:

$myclient = new SoapClient($wsdl, $options);

$login = new SOAPHeader($wsdl, 'email', 'mylogin');
$password = new SOAPHeader($wsdl, 'password', 'mypassword');
$headers = array($login, $password);

$myclient->__setSOAPHeaders($headers);

Ama ben bu başlıkları toplanması ve işlenmesi için her yerde yöntemler bulamıyor server-side. Ben orada tahmin ediyorum başlıklarını ele benim SoapServer bir yöntemi tanımlamak için kolay bir yolu olmalı ...

3 Cevap

SoapClient HTTP kimlik doğrulaması uygulamak için kullanıcı adı ve şifresini kullanır. Temel ve Digest kimlik doğrulama desteği vardır (see source)

Sunucu tarafında PHP HTTP kimlik doğrulaması uygulama hakkında bilgi için, bkz: this manual page.

Eğer bir UsernameToken başlığında bazı kimlik geçebileceği nasıl gösterir SoapServer manuel sayfasında this user-contributed sample görmek, HTTP kimlik doğrulaması kullanmak istemiyorsanız.

RAW POST verilerini okuma deneyebilirsiniz.

if ( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
    $xml = file_get_contents('php://input');
    print( htmlspecialchars( $xml );
    // XML processing
}

$ Xml Eğer bütün SOAP XML isteği olacaktır.

SoapServer SOAP başlıklarını okumak için yöntemler yoktur.

-- edit: contributed example from manual does not seem to work, header handling method never gets called

PHP güncel sürümünü kullanmak zorunda. PHP 5.2.4 ile ben aynı sorun vardı, ama 5.2.17 veya 5.3.8 ile (php.net üzerinde kullanıcının katkıda samle açıklanan) işleme soap üstbilgisi için geri çağırdı ve her şey çok iyi çalışıyor alır.