2016-08-12 18 views
6

Tôi có một vấn đề mà tôi đang cố gắng sử dụng tiêu chuẩn PHP SoapClient để truy cập một phương pháp trên một SoapServer. Vấn đề là các phương pháp trên SoapServer được liệt kê hai lần với cùng một tên, nhưng hành động là khác nhau.PHP SoapClient Remap SoapAction trong chế độ WSDL?

Ví dụ: Giao diện người dùng SOAP hiển thị GetStockQuote và GetStockQuote được liệt kê hai lần, nhưng GetStockQuote thứ hai thực sự sẽ gọi GetStockQuoteV2.

Nhưng SoapClient PHP của tôi, nếu tôi gọi $ client-> GetStockQuote, nó sẽ tự động gọi đầu tiên. Từ nghiên cứu của tôi, tôi phải làm một cái gì đó như thế này thay thế.

$client->__soapCall('GetStockQuote', array($request), array('soapaction'=>'GetStockQuoteV2')); 

Nhưng khi ở chế độ wsdl, nó vẫn gọi GetStockQuote thay vì GetStockQuoteV2.

Kết luận của tôi là tôi phải chạy ở chế độ không phải wsdl và xử lý những phiền toái của điều đó. Khi ở chế độ không phải wsdl, __soapCall ở trên dường như đang gọi phương thức đúng, nhưng vì tôi đang ở chế độ không phải wsdl, tôi nghĩ có vấn đề với việc xây dựng AuthHeader thích hợp mà máy chủ cần.

Câu hỏi của tôi là, tôi có thể remap tác vụ xà phòng trong khi ở chế độ wsdl của PHP SoapClient không?

+0

luôn chạy ứng dụng khách với bộ đệm ẩn khi phát triển ứng dụng. $ client = new SoapClient ('http://somewhere.com/?wsdl', mảng ('cache_wsdl' => WSDL_CACHE_NONE)); và có thể chia sẻ tệp wsdl của bạn. Ngoài ra nếu bạn đang làm việc với SOAP với sự tuân thủ WS-I bị vô hiệu hóa, và bật chế độ tuân thủ WS-I, cả hai tệp wsdl đều khác nhau. –

Trả lời

2

Đó là một giải pháp xấu, nhưng như chúng ta thấy ở đây - bạn có dịch vụ Xà phòng xấu xí ở phía bên kia.

  1. Hãy WSDL url
  2. Lưu nó như là địa phương tập tin
  3. Và thay đổi có trật tự các phương pháp (những người xấu nên 1st)

Một giải pháp khác. Bạn có thể mở rộng SoapClient và phương thức bên trong A thực sự gọi phương thức từ xa B.

+0

Có, việc ghi đè phương thức trong SoapClient có vẻ là cách sạch nhất để giải quyết vấn đề này. Tôi sẽ không muốn phải duy trì một wsdl sửa đổi. – Halfstop

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