Android Soap通信(Java)


Soap通信とは?


プロトコルスタイル、単純オブジェクトアクセスプロトコルの弱者、セキュリティレベルが厳格で、成功/繰り返し実行ロジックは、最初から最後まで信頼性を提供し、ACIDを遵守し、データの変形を減らし、定義を明確にした.
XMLベースのメッセージのプロトコルは、HTTP、HTTPS、SMTP等によりコンピュータネットワーク上で交換される.
SOAPはWebサービスが基本情報を伝達する基礎である.SOAPにはいくつかの形式のメッセージ・モードがありますが、通常はリモート・プロシージャ・コール(RPC)モードであり、クライアントからサーバにメッセージを要求し、サーバはすぐにメッセージに応答します.SOAPはXML−RPCとWDDXにおける封筒/ヘッド/バルクからなる構造と伝送と相互中立性の概念をもたらした.
SOAPは,XMLをベースにタイトルと本体を組み合わせたデザインモデルとして設計されている.見出しはオプションで、重複、セキュリティ、トランザクションを情報とするメタデータ情報があります.マスターセクションは、主な情報の大部分に関連しています.
  • SOAPは、サービスインタフェースを使用してサーバ
  • にアクセスする.
  • SOAPはWS-securityをサポートしています.WS-securityは伝送レベルに優れており、SSLよりもやや複雑なので、エンタープライズ・セキュリティ・ツールに統合するのに適しています.
  • エンタープライズ・アプリケーションでは、より高いリソース、より高いセキュリティ、およびより高い要件が必要になることが多いため、SOAPを選択します.
  • AndroidでのSoap通信


    ksoap 2ライブラリ/SoapObjectの使用

    1.宣言変数(WSDLの情報)


    要求ごとにSOAP要求テンプレートを作成します.
  • NAMESPACE:Webサービス作成時に
  • に書き込む
  • URL:Webサービス位置
  • SOAP ACTION:Web上で見ると、関数説明
  • が表示されます.
  • METHOD NAME:呼び出された関数名
  • 
    //SOAP 통신을 위한 변수 
     private static final String NAMESPACE = "https://api.authorize.net/soap/v1/";
     private static final String URL ="https://apitest.authorize.net/soap/v1/Service.asmx?wsdl"; 
     private static final String SOAP_ACTION = "https://api.authorize.net/soap/v1/AuthenticateTest";
     private static final String METHOD_NAME = "AuthenticateTest";

    2.Soapオブジェクト作成後のパラメータ入力


    request.addProperty("sType", sType); -> 変数名/パラメータ値の転送
      //request 설정
        request = new SoapObject(NAMESPACE, METHOD_NAME);
        request.addProperty("sType", sType);
        request.addProperty("sInputType", "JSON");
        request.addProperty("sOutputType", "JSON");
        request.addProperty("sEncYn", "N");
    
      //createJson, putJson
        request.addProperty("sParam", jsonObject.toString());
        
      // Envelope 설정
         envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
         envelope.setOutputSoapObject(request);
         envelope.dotNet = true;

    3.Webサービスを呼び出す

    try {
           // 웹서비스 호출
             HttpTransportSE androidHttpTransport = new HttpTransportSE(URL, 2000);
             androidHttpTransport.call(SOAP_ACTION, envelope);
           // 웹서비스 응답
             SoapPrimitive soapPrimitive = (SoapPrimitive) envelope.getResponse();
             result = envelope.getResponse().toString();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (XmlPullParserException e) {
                e.printStackTrace();
            }
      }