NuSOAP kütüphanede hafif bir ihmal var gibi görünüyor ... Bu içerik başlıkları "text / xml" ZORUNLU varsayar, böylece istemcisi, uygulama / soap + xml başlıklarını çıktılar bir servise bağlanmak için çalışıyor eğer ' ll gibi hataları ile sonuna kadar:
Tepki değil türü text / xml of: application / sabun + xml; charset = utf-8
Bunu test etmek için, ben bir SOAP hizmetine giriş yapmak için kullanılan aşağıdaki küçük işlevi desen, yararlanabilir. Istemci nesnesi yazdırmak, unutmayın! Aslında bakmak için bir sonuç alamayabilirsiniz!
require_once('path/to/downloaded/libraries/nusoap.php');
var $endpoint = 'https://somedomain.com/path/to/soap/server/Login';
var $client; // the soapclient object
function SOAP_Login()
{
$this->client = new soapclient($this->endpoint);
$err = $this->client->getError();
if ($err)
{
// Display the error
echo '<p><b>SOAP Constructor error: ' . $err . '</b></p>';
exit;
// At this point, you know the call that follows will fail
}
$params = array(
'some' => 'thing.. depends on what the WSDL expects'
);
$result = $this->client->call('someFunction', $params);
print_r($result); // Without the fix, this prints nothing (i.e. false) !!!
print_r($this->client); // Instead, look at the state of the client object, specifically error_str and debug_str
}
Ben $ sonucu basılmış, ben hiçbir şey yok, ama ben $ istemci nesnesi basılmış zaman, ben hata olduğunu görebiliyordu.
Ben uygulanan küçük kesmek hattı 7500 civarında, nusoap.php dosyasında oldu bu arayın eğer deyimi.:
if (!strstr($headers['content-type'], 'text/xml')) {
$this->setError('Response not of type text/xml: ' . $headers['content-type']);
return false;
}
Ve bu şekilde değiştirin:
if (!strstr($headers['content-type'], 'text/xml') && !strstr($headers['content-type'], 'application/soap+xml') ) {
$this->setError('Response not of type text/xml: ' . $headers['content-type']);
return false;
}
Tüm bu (geçerli bir xml başlığı olan) bir "uygulama / sabun + xml" başlığı sorunu yanıtları işlemek NuSOAP sağlar olduğunu gelmez.