2011-12-02 17 views
7

Khi tôi cố gắng truy cập vào một chức năng trong wsdl với một số dữ liệu (sử dụng client xà phòng trong php) Tôi nhận được lỗi sau.của router SoapFault ngoại lệ: [Khách hàng] Chức năng không phải là một phương pháp có giá trị cho dịch vụ này

Uncaught SoapFault exception: [Client] Function function_nameis not a valid method for this service 

Mọi trợ giúp?

+1

Đó có phải là lỗi thực tế? Bởi vì nếu tôi đoán bạn đã lấy một tệp mẫu từ nhà cung cấp dịch vụ và cố thực hiện cuộc gọi đến một chức năng dịch vụ có tên là 'function_name' - đó không phải là tên thực của hàm. Bạn có nghĩa vụ phải thay thế 'function_name' với tên của hàm bạn đang gọi, nó chỉ là một trình giữ chỗ để hiển thị cho bạn nơi tên hàm sẽ đi. Nhà cung cấp dịch vụ có thể cung cấp tài liệu. Tôi đề nghị bạn đọc nó. Đúng vậy. – DaveRandom

+0

Xin chào Dave cảm ơn vì đã trả lời.Đó không phải là thông báo lỗi ban đầu.i đã thay thế tên chức năng thực tế bằng 'function_name' –

+0

Vâng, ngay cả như vậy, lỗi sẽ cho bạn biết rằng tên hàm không hợp lệ cho dịch vụ bạn đang cố gắng tiêu thụ lại -kiểm tra các tài liệu và đảm bảo rằng tên chức năng là hợp lệ, và nếu có, hãy liên hệ với nhà cung cấp dịch vụ. – DaveRandom

Trả lời

25

Nếu bạn muốn thực hiện một chức năng mà SOAP không thể tìm thấy - có thể là PHP cache file wsdl.

Thêm này:

ini_set("soap.wsdl_cache_enabled", "0"); 

để vô hiệu hóa bộ nhớ đệm.

+0

giúp tôi!Cảm ơn – Talisin

+0

bạn an toàn cuộc sống của tôi – tingfungc

+0

Tôi đã thêm dòng này, vẫn nhận được lỗi tương tự, tôi nên làm gì? – Saani

2

Hai giải pháp khả thi:

  1. thử xem có chức năng thực sự tồn tại với đoạn mã đó: PHP SoapClient request: not a valid method for this service
  2. Ngoài ra, một khi bạn đã hiển thị danh sách các cuộc gọi chức năng có sẵn, chăm sóc mà nếu WSDL của bạn được tạo ra bởi một máy chủ SOAP Java, bạn có thể có một số hàm có tên là "dịch vụ" (hoặc có cùng tên). Chỉ cái đầu tiên sẽ được khách hàng SOAP PHP nhận ra và sử dụng. Bạn cần phải đổi tên thủ công tất cả các bạn trong WSDL!
0

Chỉ cần thêm tham số, kiểu trả về và phương thức dịch vụ web vào nhận xét ở đầu hàm. Nó sẽ hoạt động. Tôi đã thử làm việc của nó.

/** 
* @param string the symbol of the stock 
* @return float the stock price 
* @soap 
*/ 
public function getPrice($symbol) 
{ 
    //...return stock price for $symbol 
} 
0

Tôi gặp sự cố này và cuối cùng đã quyết định kiểm tra nhật ký lỗi php của mình.

Trong php.ini bật always_populate_raw_post_data = -1 và khởi động lại máy chủ.

phiên bản PHP của tôi là 5.6.8

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