2012-05-09 31 views
6

Tôi có một câu hỏi chung về dịch vụ web và tôi hy vọng bạn có thể giúp tôi giải thích rõ ràng về vấn đề này.Webservices - SOAP so với "XML over HTTP"

Tôi đang làm việc với một dịch vụ web mà máy chủ đang gọi là "XML qua dịch vụ HTTP". Họ cho rằng dịch vụ này KHÔNG phải là dịch vụ SOAP, nhưng phản hồi là một phản ứng SOAP phong bì. Dịch vụ hiện được gọi qua bài đăng biểu mẫu HTML; đây là hình thức HTML và trả lời:

HTML:

<FORM name=TestForm action=http://intranet/TheWSMethod enctype="text/plain" method="POST"> 
    <TEXTAREA name=Data rows=22 cols=91 type="text" style="position: absolute; left: 78; top: 69; width:752px; height:330px"></TEXTAREA> 
    <INPUT type=xml> 
    <INPUT type=submit value="Transmit"> 
</FORM> 

ỨNG PHÓ - SOAP dựa?

<?xml version="1.0" encoding="UTF-8" ?> 
<soapenv:Fault xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
    <faultcode>soap-env:Server</faultcode> 
    <faultstring>9001</faultstring> 
    <faultactor>/TheWSMethod</faultactor> 
    <detail> ... </detail> 
</soapenv:Fault> 

Chủ nhà nói với tôi rằng có không WSDL cho quá trình này, đó là nơi mà sự nhầm lẫn của tôi bắt đầu.

Vì vậy, câu hỏi của tôi là, có hay không có/nên là một WSDL hiện có? (tức là họ kéo chân của tôi hoặc họ không hiểu những gì tôi đang yêu cầu) hoặc có thể không có WSDL cho loại dịch vụ này không?

Trả lời

14

SOAP chỉ là một chuyên môn về XML qua HTTP và phản hồi mà bạn đã đăng thực sự trông giống như một phản hồi SOAP (thực tế là SOAP fault).

Điều này trông giống như một sự hiểu lầm lớn, do đó, đừng cho rằng họ đang kéo chân của bạn. Thử hỏi câu hỏi của bạn theo cách khác.

Đối với WSDL, nếu đây thực sự là dịch vụ web SOAP 100%, hãy lưu ý rằng không bắt buộc phải có WSDL cho dịch vụ web SOAP.

Dịch vụ web chỉ là một ứng dụng hiển thị một tập hợp các hoạt động qua mạng. Để gọi các hoạt động này, bạn cần phải biết tên của chúng là gì, tham số nào chúng mong đợi, loại tham số nào có vv, để bạn biết cách xây dựng client stub của mình.

Điều này có nghĩa là dịch vụ web cần phải được ghi lại hoặc nếu không bạn sẽ không biết cách viết mã tương tác với dịch vụ web. Tài liệu này có thể là tài liệu Word hoặc PDF và bạn có thể xây dựng khách hàng theo cách thủ công từ đó (bao gồm việc viết nhiều mã ống nước cho bản thân khách hàng đó) HOẶC tài liệu có thể là tệp WSDL không giống PDF hoặc Tài liệu Word có thể được nạp vào một công cụ để tự động tạo mã thoát nước cho bạn.

WSDL mô tả dịch vụ web - và thực hành tốt là cung cấp một dịch vụ - nhưng dịch vụ web tồn tại riêng biệt với WSDL.

+1

Cảm ơn bạn đã giải thích. Điều này giúp làm sáng tỏ rất nhiều sự nhầm lẫn của riêng tôi. – user891859

1

WSDL chủ yếu là một trình định vị cho dịch vụ web. Bạn có thể tùy ý tạo ra các lớp khách hàng từ nó bằng cách sử dụng một số công cụ để truy cập dịch vụ web.

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