2010-11-16 66 views
5

Tôi đã tạo một ứng dụng web với một thành phần ánh xạ. Tôi muốn sử dụng một dịch vụ mã hóa địa lý khác ngoài google, nhưng tất cả những dịch vụ tôi đã tìm thấy đều sử dụng SOAP để giao tiếp với trang web. Tôi chưa bao giờ sử dụng xà phòng trước đây. Có ai biết về bất kỳ nguồn lực tốt để giúp tôi tìm ra điều này? Tôi sử dụng PHP để tích hợp để xây dựng ứng dụng webLàm thế nào để tìm hiểu SOAP?

Chỉnh sửa: Tôi cần sử dụng Xà phòng để mã hóa địa lý ngay bây giờ ... vì vậy nếu bạn biết bất kỳ dịch vụ nào tốt cho điều đó, điều đó thật tuyệt vời.

EDIT Một lần nữa: tôi về cơ bản cần phải học xà phòng để tôi có thể tương tác với http://www.nn4d.com/site/global/build/web_services/geocoding_reversegeocoding/map24geocoder51service/map24geocoder51service.jsp

+0

Sử dụng thư viện SOAP. Tôi đã không sử dụng một bản thân mình trong PHP nhưng rất nhiều người sử dụng một trong các dịch vụ web của chúng tôi sử dụng NuSOAP http://sourceforge.net/projects/nusoap/ Nó nên trừu tượng tất cả những thứ phức tạp đi cho bạn. – Rup

Trả lời

17

Tự học SOAP đòi hỏi bạn phải học XML và rất nhiều công cụ cụ thể của SOAP.

Tuy nhiên, bạn đã gắn thẻ câu hỏi của mình PHP, vì vậy tôi cho rằng những gì bạn đang thực sự hỏi là tìm hiểu cách sử dụng dịch vụ web SOAP thông qua PHP. Điều này khác với việc học SOAP vì PHP (giống như hầu hết các ngôn ngữ khác) tóm tắt các bit XML lộn xộn của SOAP và biến nó thành một đối tượng dễ sử dụng.

Đó là lý thuyết.

Có hai bộ công cụ SOAP được sử dụng phổ biến trên PHP. Một được gọi là NuSOAP. Điều này hoạt động khá tốt, nhưng không còn trong quá trình phát triển tích cực (nó được viết trước khi PHP cung cấp lớp SOAP dựng sẵn của riêng nó). Nếu bạn muốn sử dụng NuSOAP, đây là trang web chính thức của dự án: http://nusoap.sourceforge.net/

Nếu bạn đang sử dụng PHP5.2 hoặc 5.3 (bạn nên làm vì chúng là phiên bản hiện được hỗ trợ), thì bạn sẽ có một lớp SOAP dựng sẵn. Nếu bạn muốn sử dụng lớp SOAP PHP chính thức, đây là trang hướng dẫn sử dụng: http://php.net/manual/en/book.soap.php

Khi bạn đã chọn lớp SOAP bạn muốn sử dụng, bạn sẽ cần biết một chút về dịch vụ web SOAP nói chung, và về dịch vụ cụ thể bạn muốn sử dụng.

Trước tiên, bạn sẽ cần biết liệu dịch vụ có cung cấp WSDL hay không. WSDL là một tài liệu XML khác định nghĩa các phương thức và các tham số có sẵn trên dịch vụ SOAP. Điều này cho phép lớp SOAP của bạn định nghĩa một lớp cho dịch vụ SOAP, làm cho cuộc sống của bạn trở thành một lập trình viên dễ dàng hơn. Trong thực tế trong PHP nó không thực sự làm cho nhiều differench mặc dù.

Tôi cũng khuyên bạn tải xuống SOAP UI, một công cụ gỡ lỗi cho các dịch vụ SOAP. Nó cho phép bạn xem và sửa đổi mã XML chính xác được gửi và nhận.Nó sẽ giúp bạn tìm hiểu và hiểu cách SOAP hoạt động, và cũng giúp bạn gỡ lỗi nếu mã PHP của bạn không hoạt động như mong đợi.

[EDIT] Rõ ràng điều quan trọng nhất là biết API bạn đang làm việc.

Nếu dịch vụ bạn đang xử lý có WSDL, PHP sẽ tự động tạo các phương thức thích hợp cho bạn khi bạn tạo đối tượng. Ví dụ:

$client = new SoapClient("http://somedomain/stockquote.wsdl"); 
print($client->getStockQuote("MSFT")); 

Nó thực sự đơn giản như vậy. Cấp, đây là một ví dụ khá đơn giản; hầu hết các dịch vụ SOAP (chắc chắn là những dịch vụ mà tôi đã sử dụng!) lấy nhiều tham số hơn thế, và chúng thường lấy chúng dưới dạng một cấu trúc mảng lồng nhau khổng lồ.

Nếu dịch vụ của bạn không có một WSDL, bạn sẽ phải gọi các phương pháp sử dụng một phương pháp hơi khác nhau:

$client = new SoapClient(null, array('location' => "http://somedomain/stockquote.asp")); 
print($client->__soapCall('getStockQuote',"MSFT")); 

Hy vọng rằng sẽ giúp bạn hiểu nó tốt hơn một chút.

Tôi vẫn khuyên bạn nên đi với SOAP UI, vì nó sẽ giúp bạn hiểu SOAP nói chung tốt hơn rất nhiều. Bạn cũng nên đọc các trang hướng dẫn sử dụng lớp PHP SOAP: http://php.net/manual/en/book.soap.php - tài liệu rất kỹ lưỡng, mặc dù với tất cả những thứ này, nó có thể khó khăn để tiếp cận lúc đầu vì nó là một tham chiếu chứ không phải hướng dẫn.

+0

Cảm ơn sự giúp đỡ. Tôi đã chỉnh sửa bài đăng để hiển thị chính xác những gì tôi cần phải tìm hiểu về xà phòng. Tôi muốn tương tác với một api cụ thể (mặc dù nó sẽ được tốt đẹp để học nói chung) Từ những gì tôi có thể nói, các dịch vụ này nhận được yêu cầu từ một trang web, và có vẻ như họ gửi một tập tin xml/xà phòng ... Tôi don 't thực sự biết, tôi vẫn phải tìm ra nó. – Bill

+1

@Phil - Tôi sẽ thêm một chút vào câu trả lời của mình để cố gắng trợ giúp thêm. – Spudley

+0

Awesome ... cảm ơn sự giúp đỡ! – Bill

1

Cùng với những câu trả lời khác ở đây, tôi thấy rằng tôi tốt nhất học SOAP bằng cách học làm thế nào để sử dụng soapUI:

http://www.soapui.org/

Đó là một ứng dụng tuyệt vời để gỡ lỗi giao diện xà phòng của bạn và giúp tôi cố gắng tìm ra những gì đang diễn ra trong các cuộc gọi PHP của tôi.

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