2012-12-25 28 views
34

Tôi cần gỡ lỗi mã sử dụng ứng dụng khách xà phòng. Tôi thấy phương pháp getLast * trong php.net, nhưng khi tôi cố gắng để có được yêu cầu cuối cùng cho debug nó trả về NULLLàm thế nào để kết thúc yêu cầu SoapClient để gỡ lỗi?

<?php 

    $client = new SoapClient("http://www.webservicex.net/ConverPower.asmx?WSDL"); 

    $response = $client->ChangePowerUnit(array(
     "PowerValue" => 100, 
     "fromPowerUnit" => "horsepower", 
     "toPowerUnit" => "megawatts" 
    )); 


    echo "====== REQUEST HEADERS =====" . PHP_EOL; 
    var_dump($client->__getLastRequestHeaders()); 
    echo "========= REQUEST ==========" . PHP_EOL; 
    var_dump($client->__getLastRequest()); 
    echo "========= RESPONSE =========" . PHP_EOL; 
    var_dump($response); 

?> 

Kết quả của việc thực thi mã:

$php soap_test.php 

====== REQUEST HEADERS ===== 
NULL 
========= REQUEST ========== 
NULL 
========= RESPONSE ========= 
object(stdClass)#2 (1) { 
    ["ChangePowerUnitResult"]=> 
    float(0.0746) 
} 

Làm thế nào để có được nội dung của cơ thể và tiêu đề của yêu cầu SoapClient cuối cùng?

Trả lời

43

These functions chỉ hoạt động nếu các đối tượng đã được tạo ra SoapClient với các tùy chọn dấu vết đặt là TRUE.

Hãy thử:

$client = new SoapClient("http://www.webservicex.net/ConverPower.asmx?WSDL", array('trace' => 1)); 
+2

Mặc dù @xdazz là đúng tôi khuyên bạn nên cũng để thêm '' ' "ngoại lệ"=> 0''' các thông số trong phương pháp SoapClient để bạn có thể xem các cuộc gọi bạn đang thực hiện ngay cả khi bạn nhận được phản hồi sai. – Dragon54

Các vấn đề liên quan