2011-11-18 39 views
6

Tôi đã tạo một dịch vụ web bằng php sử dụng SOAPServer. Dự kiến ​​sẽ thấy SoapHeaderUsernameToken với các phần tử tên người dùng và mật khẩu. Tất cả mọi thứ thực sự hoạt động tốt khi tôi bao gồm tiêu đề này trong yêu cầu. Chỉ bằng cách định nghĩa một phương thức trong lớp trình xử lý Soap có tên là "UsernameToken", phương thức này được gọi và stdClass Obj được truyền cho nó. Sau đó, tôi có thể xác thực người dùng theo số $Obj->username$Obj->password.Làm thế nào để yêu cầu tiêu đề xà phòng xác thực trong WSDL?

Điều tôi không biết là những gì cần thêm vào tệp WSDL trước hết xác định tiêu đề UsernameToken này và cách thứ hai để chỉ ra trong WSDL rằng nó là bắt buộc?

Tôi đã đọc ở đâu đó rằng tiêu chuẩn SOAP mới không dùng khái niệm tiêu đề "bắt buộc".

Bất kỳ lời khuyên nào về cách ít nhất là biểu thị wsdl yêu cầu của tôi nên bao gồm tiêu đề này?

+1

Bạn có thể thêm liên kết đến nơi bạn đã đọc tiêu chuẩn SOAP mới không dùng khái niệm tiêu đề "bắt buộc" không? – hakre

+1

Bạn có thể hiển thị WSDL hiện tại của mình không? – jap1968

Trả lời

3

Dưới đây là một ví dụ về một WSDL định đăng nhập: https://ws1.webservices.nl/soap_doclit?wsdl

<binding name="Webservices.nlBinding" type="tns:Webservices.nlPortType"> 
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> 
<operation name="login"> 
<soap:operation soapAction="https://ws1.webservices.nl/soap_doclit.php/login" style="document"/> 
<input> 
<soap:body use="literal"/> 
<soap:header message="tns:Headers" part="HeaderLogin" use="literal"/> 
<soap:header message="tns:Headers" part="HeaderAuthenticate" use="literal"/> 
</input> 
+2

câu trả lời của bạn đã không thực sự trả lời câu hỏi sau: "làm thế nào để chỉ ra trong WSDL rằng nó được yêu cầu?" ngay cả đó là một điểm khởi đầu giá vé sau khi tất cả. –

1

Câu trả lời dài. Xem bài viết this.

Trong ứng dụng khách, bạn có thể sử dụng thuộc tính mustUnderstand để cho biết liệu mục nhập tiêu đề là bắt buộc hay tùy chọn để người nhận xử lý. Nếu máy chủ không thể hoặc không muốn xử lý tiêu đề bắt buộc, nó phải ném một lỗi SOAP cho máy khách.

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