Android Soap 통신 (java)

hjseo-dev·2021년 12월 6일
0

Android

목록 보기
1/18
post-thumbnail

Soap 통신이란?

프로토콜 스타일, simple object access protocol 의 약자, 보안 수준이 엄격함, 성공 / 반복 실행로직이 규정되어 있어 처음부터 끝까지 신뢰성을 제공 ACID를 준수하여 데이터의 변형을 줄어주고 정의를 명확하게 한다.

HTTP, HTTPS, SMTP 등을 통해 XML 기반의 메시지를 컴퓨터 네트워크 상에서 교환되는 프로토콜이다.

SOAP은 웹 서비스에서 기본적인 메시지를 전달하는 기반이 된다. SOAP에는 몇 가지 형태의 메시지 패턴이 있지만, 보통의 경우 원격 프로시져 호출(RPC)패턴으로, 클라이언트에서 서버쪽으로 메시지를 요청하고, 서버는 메시지를 즉시 응답하게 된다. SOAP는 XML-RPC와 WDDX에서 envelope/header/body로 이루어진 구조와 전송과 상호 중립성의 개념을 가져왔다.

SOAP은 XML을 근간으로 헤더와 바디를 조합하는 디자인 패턴으로 설계되어 있다. 헤더는 선택사항으로 반복이나 보안 및 트랜잭션을 정보로 하는 메타 정보를 가지고 있다. 바디부분은 주요한 대부분의 정보를 다룬다.

  • SOAP는 서비스 인터페이스를 이용해서 서버에 접근
  • SOAP는 WS-Security를 지원하는데, WS-Security는 전송 레벨에서 아주 뛰어나며 SSL보다도 조금 더 복잡하기 때문에 기업용 보안 도구에 통합하는데 보다 이상적입니다.
  • 기업용 애플리케이션인 경우에는 보다 많은 리소스와 아주 엄격한 보안 그리고 여러 다양한 요구 사항들을 만족해야 하기 때문에 SOAP 방식을 택하는 경우가 많습니다.

Android에서의 Soap통신

ksoap2 라이브러리 활용 / SoapObject를

1. 변수 선언 (WSDL에 들어있는 정보)

각 요청에 대한 SOAP 요청 템플릿을 만듭니다.

  • NAMESPACE : 웹서비스 만들 때 기재
  • URL : 웹서비스 위치
  • SOAP_ACTION : 웹에서 확인하면 함수 설명이 나옴
  • 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 Object 생성 후 파라미터 입력

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. 웹서비스 호출하기

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();
        }
  }

0개의 댓글