2011-08-25 8 views
5

現在、一部のWebサイトで実装されている.NET asmx webservicesを消費する必要があります。私はwebpsiteと同じ方法でそれらのwebservicesを消費するアプリケーションを作成する必要があります。 2つの問題があります。まず、私はこれらのWebサービスメソッド(呼び出し、使用されたフォーマットなど)についての仕様はありません。次に、APIを使用してフリックからJSONデータを取得するためのJSONフレームワークを使用するアプリケーションを作成するだけです。私はそれがREST webservicesを使って行われたと思います:)私は、リクエストストリングを構築し、それをWebサーバーに渡し、結果を取得し、XMLまたはJSONを解析し、それらを表示します。ですから、現在のウェブサイトのウェブサービスの形式を特定する方法はわかりません。私は、そのウェブサイトのソースを見て、神秘的なチェック、検証などのことをたくさんやっているJavaScriptコードの束を見た。では、正しい形式を特定する方法は?それを区別する方法は、SOAPまたはREST Webサービスですか?

答えて

6

.NET ASMXサービスの場合は、常にSOAPです。 HTTPで公開されるSOAPサービスは、常に通信のためにHTTP POSTメソッドを使用します。また、.wsdlファイルを公開して、そこからクライアントコードを生成して生成する必要があります。そのため、JSONフレームワークの使用やWebサービスへの独自のHTTPリクエストのオーケストレーションを心配する必要はありません。Objective-Cクライアントはあなたのためにそれを世話する必要があります。

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

+0

私はfirefox firebugでさらに詳しい情報を表示しようとしました。リクエストを追跡した後、私はリクエストがいくつかのリンクに行われているのを見ています:http://www.website.com/GetQuote.aspx?units=1&len=1&width=1&height=1&weight=1&type=1&qty=1&cnt=GB&postcode=as123 REST Webサービスのように見えます。 – Centurion

2

@whaleyは彼の答えに言うように、あなたがここにSOAPサービスを扱っているように、それが見えます。それを知ることで正しい方向へ一歩を踏み出すことができますが、もしそれと対話したいのであれば、それ以上のことをする必要があります。サポートするSOAP操作の詳細、要求と応答メッセージのXMLスキーマなどを知る必要があります.WSDLファイルを見つけることができれば、そのすべての情報を提供する必要があります。

WSDLファイルを追跡できない場合(いくつかのサービスではさまざまな理由で簡単にすることができない場合があります)、それでも解決できない場合があります。ウェブサイトが本当にSOAPインターフェイスを使用して対話している場合は、任意の数のツールを使用してブラウザが送信したリクエストを見ることができます。 Safariで、開発者向けツールメニューを有効にして、Webインスペクタを表示します。 HTTPリクエストの詳細を表示し、何が起こっているかを見ることができます。 Firefoxには、同じやり方をすることができるfirebugプラグインがあります。各ブラウザには独自のツールがありますが、ブラウザに適したツールを見つける必要があります。

警告の単語:バックエンドサービスとやりとりするWebページでは、実際にはSOAPサービスを直接使用しないことがよくあります。代わりの非公開インターフェースを使用して、必要なコールを発信している可能性があります。あなたのブラウザが送信したリクエストを見るとSOAPメッセージ(SoapEnvenlope要素のようなリクエスト/レスポンスXMLが異なる)のように見える場合は、それらのSOAPメッセージをobjective-cから複製できると仮定するのはかなり安全です。そうでない場合は、WSDLファイルを追跡できない限り、不運になる可能性があります。

関連する問題