PHP 5 SOAP istemci döner WSDL sağlanan işlevi çağrıldığında NULL

2 Cevap php

Benim PHP uygulaması belirli kullanıcılara aramak için bir webcoder kullanmaya çalışıyorum. Ben başarı ile ASP.NET bu aynı webservice kullandık.

Temelde, PHP doc bana söyler gibi ben her şeyi, ve ben (webservice kendisi için) ASP.NET kullanılan aynı yöntemler / değişkenleri kullanabilirsiniz ama bir sonuç almak için görünmüyor olabilir.

Fonksiyonu (__ getFunctions listelenen) ve eğer doğru anlamak mixed PHP içinde eşdeğer olan, anyType döndürmesi gerekir:

array(1) { [0]=>  string(63) "anyType basicSearch(string $sharedSecret, string $searchParams)" } 

Ben basicSearch arama yaptığınızda () olsa, döner NULL görünüyor.

basicSearch () bilgi ile bir XML belge dönmek gerekiyordu. ASP.NET ben basitçe yanıt döküm, ben inanıyorum, ve XmlDocument için kullanılır. Ben de PHP bunu yapmalıyım? Bir XML belgesi (SimpleXML, DOM, vb) hangi gösterimi ile?

PHP biçimini anlayamıyorum sırf boş olarak gösterebilir misiniz?

PHP yanlış bir şey yapıyorum? Yoksa webservice kendi içine bakmak ve o taraftaki hata ayıklama denemeliyim?

<?php
    $client = new SoapClient($wsdl_url);

    echo $client->__getFunctions();
    echo "<br />\n";
    echo $client->basicSearch($key, $req);
?>

PS: Ben PHP 5 kütüphane kullanıyorum. Belki nu-sabun gibi diğer bazı kütüphane kullanarak yardımcı olacak? Bu konuda fazla çevrim doc gibi görünüyor.


Update:

Parametre çalışmıyor geçmek için bir dizi kullanarak, SABUN ayrı argümanlar bekliyor. () __ GetLastRequest çağrılması diğer XML ile $ anahtar ve $ req birleştirerek bir dize döndürür. __ GetLastResponse arama () boş bir dize döndürür. Hiçbir istisnası olursa olsun atılır. O ben __ getFunctions () çağırdığınızda ben listelenen kullanmak işlevini olsun çünkü WSDL dosyası ayrıştırılır olsa bile, PHP bunu vermek argümanlarla ne yapacağını bilmiyor gibi görünüyor.

Herhangi bir yardım mutluluk duyacağız.

Güncelleme ': hiçbir çözüm çalışma Hala. Ben şaşkın ...

2 Cevap

Ben php SoapClient kütüphaneleri kullanarak başladığımda bütün bu şey oldukça kafa karıştırıcı bulundu. Aşağıdaki gibi şeyler biçimlendirmek için doğru yolu:

$client = new SoapClient( $wsdl_url, array( "trace" => 1 ) );

$params = array(
    "sharedSecret" => "thisIsSomeSecret",
    "searchParams" => "thisIsSomeSearchParam"
);

$response = $client->basicSearch( $params );

Tepki görmeden, ben nasıl dönüş parametreleri başvurmak için size söyleyemem, ama onun depolanmış yolu stdClass nesnenin üyesi var gibidir. Eğer böyle döner başvurmak böyle ...

$ Reponse-> paramname;

Eğer diziyi orada seçenekler kümesi ("iz" => 1) tutarsan güzel bir hile bu iki işlevi çağırabilir olduğunu ....

$respXML = $client->__getLastResponse();
$requXML = $client->__getLastRequest();

... Onun iyi biçimli olmadığını görmek için, gönderilen alır gerçek xml görmek için. Dikkatli, SoapClient oldukça adamcağız. NuSOAP çok daha iyi olsa da, bu çöp için gitmez.

yeap

$ Client = new SoapClient ($ wsdl_url, array ("iz" => 1));

"Iz" parametresi olur