2011-08-25 28 views
5

Tôi cần tiêu thụ một số dịch vụ web .NET asmx hiện đang được triển khai trong một số trang web. Tôi cần tạo một ứng dụng tiêu thụ các dịch vụ web đó theo cách tương tự như webpsite. Có hai vấn đề. Đầu tiên, tôi không có đặc điểm kỹ thuật về các phương thức webservice (các cuộc gọi, định dạng được sử dụng và vv). Và thứ hai, tôi chỉ xây dựng một ứng dụng sử dụng khuôn khổ JSON để nhận dữ liệu JSON từ bộ phim sử dụng API của nó. Tôi đoán rằng đã được thực hiện bằng cách sử dụng REST webservices :) Tôi hiểu rằng để thực hiện các bài viết/đến máy chủ, tôi cần phải xây dựng một chuỗi yêu cầu, sau đó chuyển nó tới máy chủ web, nhận kết quả, phân tích chúng (XML hoặc JSON) và sau đó xem chúng. Vì vậy, tôi không biết cách xác định định dạng của các dịch vụ web của trang web hiện tại. Tôi đã xem nguồn của trang web đó, đã thấy một loạt các tệp mã Javascript đang thực hiện rất nhiều công cụ kiểm tra, xác thực và vv bí ẩn. Vậy làm cách nào để xác định đúng định dạng?Làm thế nào để phân biệt nó là một SOAP hoặc REST webservice?

Trả lời

6

Nếu đó là dịch vụ .NET ASMX thì nó luôn là SOAP. Một dịch vụ SOAP được hiển thị trên HTTP sẽ luôn sử dụng các phương thức HTTP POST để liên lạc. Nó cũng sẽ hiển thị một tệp .wsdl để bạn tiêu thụ và tạo mã máy khách từ đó cũng như vậy, do đó bạn không phải lo lắng về việc sử dụng một khung công tác JSON hoặc phối hợp các yêu cầu HTTP của riêng bạn với dịch vụ web đó ... khách hàng nên chăm sóc điều đó cho bạn.

This question seems to have the answers you need for doing this in Objective-C.

+0

Tôi đã cố gắng xem thêm thông tin với firefox firebug. Sau khi theo dõi các yêu cầu, tôi thấy rằng yêu cầu được thực hiện cho một số liên kết: http://www.website.com/GetQuote.aspx?units=1&len=1&width=1&height=1&weight=1&type=1&qty=1&cnt=GB&postcode=as123 trông giống như REST webservice. – Centurion

2

Như @whaley nói trong câu trả lời của mình, có vẻ như bạn đang làm việc với một dịch vụ SOAP đây. Biết rằng cho phép bạn thực hiện một bước đi đúng hướng, nhưng nếu bạn muốn tương tác với nó, bạn sẽ cần phải làm nhiều hơn thế. Bạn sẽ cần phải biết chi tiết về các hoạt động SOAP mà nó hỗ trợ, lược đồ XML cho các yêu cầu và các thông báo phản hồi, vv Nếu bạn có thể tìm thấy tệp WSDL, nó sẽ cung cấp cho bạn tất cả thông tin đó.

Nếu bạn không thể theo dõi tệp WSDL (một số dịch vụ không muốn dễ dàng vì nhiều lý do), thì bạn vẫn có thể tìm ra. Nếu trang web thực sự tương tác bằng giao diện SOAP thì bạn có thể xem các yêu cầu mà trình duyệt của bạn gửi đi bằng bất kỳ số công cụ nào. Trong Safari, bật trình đơn công cụ dành cho nhà phát triển và sau đó hiển thị trình kiểm tra web. Bạn có thể xem chi tiết về các yêu cầu HTTP và xem những gì đang diễn ra. Firefox có plugin firebug có thể làm tương tự và hơn thế nữa. Mỗi trình duyệt đều có các công cụ riêng cho nhà phát triển, nhưng bạn sẽ phải tìm đúng công cụ cho trình duyệt của bạn.

Lời cảnh báo: Thường xuyên một trang web tương tác với dịch vụ back-end của bạn không thực sự sử dụng dịch vụ SOAP trực tiếp. Nó có thể được sử dụng một giao diện thay thế và không công khai để thực hiện các cuộc gọi cần thiết. Nếu bạn nhìn vào các yêu cầu mà trình duyệt của bạn gửi đi và nó giống như một thông báo SOAP (rất nhiều thứ như các thành phần SoapEnvenlope với XML yêu cầu/đáp ứng riêng biệt), thì bạn có thể sao chép các thông báo SOAP đó từ mục tiêu-c. Nếu không, bạn có thể không may mắn trừ khi bạn có thể theo dõi một tệp WSDL.

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