2011-06-30 17 views
7

İlk girişimi PHP'den bir SOAP sunucusuna bağlamayı deniyorum ve nasıl oturum açacağımı anlamıyorum. ihtiyacım olan veriler. Bağlanmaya çalıştığım hizmet, Hawley USA servisi http://hawleyusa.com/thcServices/StoreServices.asmx). Nasıl bağlanacağına dair birkaç yazıya baktım ve temel bilgileri aldım. PHP'mde SOAP etkin olduğumu doğruladım ve sadece bir envanter listesi almaya çalışıyorum."Nesne başvurusu bir nesnenin örneğine ayarlanmadı" hatası PHP'den SOAP sunucusuna bağlanırken hata oluştu

<?php 
ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache 
$wsdl_path = "http://hawleyusa.com/thcServices/StoreServices.asmx?WSDL"; 

$login_id = 'mylogin_id'; 
$password = 'mypassword'; 

$client = new SoapClient($wsdl_path); 

try { 
    echo "<pre>\n"; 
    print($client->InventoryList(array("LoginID" => $login_id, "Password" => $password))); 
    echo "\n"; 
} 
catch (SoapFault $exception) { 
    echo $exception;  
} 

Bu kodu çalıştırdığınızda, bu hatayı olsun, Ancak: İşte kullanıyorum kodu

SoapFault exception: [soap:Server] Server was unable to process request. ---> Object reference not set to an instance of an object. in /Users/steve/Sites/mysite/hawley_client.php:12 

ayıklama, ben $ istemci örneği başlatılan görebilirsiniz, bu yüzden' ne zaman Bu hatayı neden aldığımı bilmiyorum.

İkinci soru: Kullanıcı kimliğini ve parolayı doğru olarak iletiyor muyum?

Teşekkürler.

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

yüzden benim giriş kimliğini ve şifresini özlüyorum görebiliriz: -:

Güncelleme> __ getLastRequest ve bu bende ne olduğunu ben $ istemci attı. Bunları InventoryList çağrıma nasıl eklerim?

+0

alınan kullanmak gerekmez alanlarda boş dizeleri, belirtmek yoksa o da aynı hatayı veriyor: hafifçe çağrı hattını değiştirin 2017/06/09 itibariyle, WSDL kullanılamaz ve soru eksik ... – Alfabravo

cevap

21

Kapa çeneni. WSDL'ye bakarak InventoryList yöntemi "istek" adı verilen bir nesneyi alır. Muhtemelen aynı böyle değil

$client->InventoryList(array("request" => array("LoginId" => $login_id, "Password" => $password)); 
+0

Hmm, Bunu daha önce denedim, ama yanlış bir şey yapmış olmalıyım. Her neyse, bu daha yakın beni alır, ama şimdi bu hatayı alıyorum: Yakalanabilir ölümcül hata: sınıf stdClass nesne hattında /Users/steve/Sites/mysite/hawley_client.php içinde dizeye dönüştürülemedi 15 Hattı 15 bu hat, BTW. Başlıklara bakıldığında, bilgi şu anda düzgün bir şekilde gönderiliyor. – wonder95

+0

Burada büyük facepalm: Bir nesneyle print() kullanıyordum. Var_dump olarak değiştirildi ve çalışıyor. Teşekkürler. – wonder95

İlgili konular