1. ホーム
  2. java

AndroidのSOAP 1.1、SOAP 1.2、HTTP GET、HTTP POSTメソッドの違いは何ですか?

2023-10-11 06:10:11

質問

SOAP Webサービスのコードを作成しているのですが、SOAP1.1、SOAP1.2、AndroidのHTTP GET & HTTP POSTメソッドのバリエーションと、それらのうちどれが好ましいかを知りたいのです。使用方法のサンプルURLやそのコードをサイトしてください。

ありがとうございます。

どのように解決するのですか?

SOAPのバージョンの違い

SOAP Version 1.1 と SOAP Version 1.2 は、どちらも World Wide Web Consortium (W3C) の標準規格です。SOAP 1.1だけでなく、SOAP 1.2をサポートしたWebサービスを展開することも可能です。SOAP 1.1 から SOAP 1.2 仕様に加えられたいくつかの変更は重要ですが、その他の変更は軽微です。

SOAP 1.2 仕様は、SOAP 1.1 に対していくつかの変更を導入しています。この情報は,SOAP 1.1 及び SOAP 1.2 のすべての新機能又は変更機能についての詳細な説明を意図したものではありません。その代わりに,この情報は,SOAP の現行版の間のより重要な差異をいくつか強調している。

SOAP 1.2仕様の変更点のうち重要なものは、以下の更新を含みます。 SOAP 1.1 は XML 1.0 に基づいています。SOAP 1.2 は、XML 情報セット (XML Infoset) に基づいています。 XML 情報セット (infoset) は,XSD スキーマによって XML 文書を記述する方法を提供する.しかし,SOAP 1.1のベースとなっているXML 1.0シリアライゼーションでは,infosetは必ずしもドキュメントをシリアライズしません.この新しいXML文書の記述方法は、バイナリプロトコル形式などの他の直列化形式を明らかにするのに役立ちます。バイナリプロトコル形式を使用すると、冗長なタグ付け情報の一部が不要になるかもしれないコンパクトな形式にメッセージを圧縮することができます。

SOAP 1.2 では、基礎となるプロトコルへのバインディングの仕様を使用して、基礎となるプロトコルのデータユニットでどの XML シリアライズが使用されるかを決定することができます。SOAP 1.2 - Part 2 で指定されている HTTP バインディングは、SOAP メッセージ情報セットのシリアライゼーションとして XML 1.0 を使用します。

SOAP 1.2 では、ベンダーが SOAP 1.2 で定義されたバインディングフレームワークに準拠している限り、HTTP を使用する以外のトランスポートプロトコルを公式に定義する機能を提供します。HTTPはどこにでもあるものですが、TCP/IPやMQを含む他のトランスポートと比べると信頼性に欠けます。 SOAP 1.2 は、Web Services-Interoperability (WS-I) プロファイルがない場合に相互運用性のエラーにつながるかもしれない多くの曖昧さを取り除く、SOAP 処理モデルのより具体的な定義を提供する。その目的は、SOAP 1.2 の実装を使用する異なるベンダー間で相互運用性の問題が発生する可能性を大幅に減らすことです。 SOAP with Attachments API for Java (SAAJ) は、SOAPリクエストを発行するためのシンプルなメカニズムとして単独で使用することも可能です。SAAJ仕様の大きな変更点は、SOAP 1.1メッセージと、SOAP 1.2形式の追加メッセージを表現できるようになったことです。例えば、SAAJ Version 1.3では、SOAPヘッダー要素に新しい定数セットとSOAP 1.2を助長するメソッド(getRole()、getRelay()など)を導入しています。また、SAAJが適切なSOAP 1.1またはSOAP 1.2メッセージを作成するためのファクトリー上のメソッドも追加されています。 エンベロープ及びエンコーディングのスキーマのための XML 名前空間は,SOAP 1.2 のために変更されている。これらの変更は,SOAP プロセッサを SOAP 1.1 及び SOAP 1.2 メッセージから区別し,既存の実装に影響を与えることなく,SOAP スキーマの変更をサポートするものである。 Java Architecture for XML Web Services (JAX-WS) は、SOAP 1.1 と SOAP 1.2 の両方をサポートする機能を導入しています。JAX-RPCはSOAPメッセージがランタイムを通過する際に操作する必要性を導入したため、このメッセージを適切なSOAPコンテキストで表現する必要性が出てきた。JAX-WSでは、SAAJ 1.3のサポートにより、さらに多くの拡張が行われています。

特定のアンドロイドのためのPOSTとGETメソッドがあるわけではありません...しかし、ここにあるのはすべて違いなのです。

GET GET メソッドは URL に名前と値のペアを追加し、リソース表現を取得することができます。このメソッドの大きな問題は、URLの長さが制限されていることです(およそ3000文字)。

これは私にとって何を意味するのでしょうか?基本的に、これはほとんどの開発者にとって、ほとんどの状況で GET メソッドの価値をなくします。フォームが多数のパラメータを使用する場合、またはパラメータが大量のデータを含む場合、URL は切り捨てられる可能性があります (今日のデータ中心のサイトでは、ほとんどの場合そうなるでしょう)。また、URLで渡されたパラメーターは、ブラウザのアドレスフィールドで見ることができます (危険です!!)。

POST GET メソッドに代わるものとして POST メソッドがあります。このメソッドは HTTP リクエストのボディ内に名前と値のペアをパッケージ化し、すっきりとした URL になり、フォームの出力にサイズの制限を課さないので、基本的にどちらを使うかは迷うことはありません。POSTもより安全ですが、決して安全ではありません。HTTPはCRUDを完全にサポートしていますが、HTML 4はその様々な要素を通じてGETとPOSTリクエストを発行することのみをサポートしています。この制限は、Web アプリケーションが HTTP をフルに活用することを妨げており、それを回避するために、ほとんどのアプリケーションは POST をオーバーロードして、リソースの取得以外のすべての処理を行うようにしています。

オリジナルの IBM ソースへのリンク