뷰트 님이 쓰신 글 :
: 안녕하세요
:
: web service통신관련 하여 개발 중에 있습니다.
:
: idhttp->get / idhttp->post로 명령을 주고 받을려고 준비중에 있습니다.
:
: 그런데
:
: WEB SERVICE가 SOAP이라는 것이 있다는데,
:
: 정확히 SOAP이 무엇인지 감이 잡히지 않습니다.
:
: 그리고
:
: Idhttp->post로 명령을 던지때 알려준 명령을 통체로 만들어 던지는데
:
:
: 이것을
:
: soap을 이용 하면 먼가 된다는 말이 있는데 이것에 대해서 이해를 못하겠습니다.
:
:
: 이것에 대해서 설명 부탁 드립니다.
:
:
:
: 제가 받은 프로토콜을 통체로 던지는 구문
: ASendMessage->Add("soapenv:Envelope xmlns:soapenv=\"
http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"
http://tempuri.org/\">");
: ASendMessage->Add("<soapenv:Header>");
: ASendMessage->Add("<ns:Client>");
: ASendMessage->Add("<!--Optional:-->");
: ASendMessage->Add("<tem:Host>" + AInfo->SendHostName +"</tem:Host>");
: ASendMessage->Add("<!--Optional:-->");
: ASendMessage->Add("<tem:Application>" + AInfo->SendAppliName + "</tem:Application>");
: ASendMessage->Add("<!--Optional:-->");
: ASendMessage->Add("<tem:Version>" + AInfo->SendVersion + "</tem:Version>");
: ASendMessage->Add("<!--Optional:-->");
: ASendMessage->Add("</ns:Client>");
: ASendMessage->Add("</soapenv:Header>");
: ASendMessage->Add("<soapenv:Body>");
: ASendMessage->Add("<tem:WS_WS_IMO_VALID_AVIT>");
: ASendMessage->Add("<!--Optional:-->");
: ASendMessage->Add("<tem:LotNumber>" + AInfo->SendLotNumber + "</tem:LotNumber>");
: ASendMessage->Add("<!--Optional:-->");
: ASendMessage->Add("<tem:IBarcode1>" + AInfo->SendIBarcode1 + "</tem:IBarcode1>");
: ASendMessage->Add("<!--Optional:-->");
: ASendMessage->Add("<tem:IBacrode2>" + AInfo->SendIBarcode2 + "</tem:IBacrode2>");
: ASendMessage->Add("<!--Optional:-->");
: ASendMessage->Add("<tem:IBarcode3>" + AInfo->SendIBarcode3 + "</tem:IBarcode3>");
: ASendMessage->Add("<!--Optional:-->");
: ASendMessage->Add("<tem:isRecreen>" + AInfo->SendIRescreen + "</tem:isRecreen>");
: ASendMessage->Add("</tem:WS_WS_IMO_VALID_AVIT>");
: ASendMessage->Add("</soapenv:Body>");
: ASendMessage->Add("</soapenv:Envelope>");
:
: TStringStream *response = new TStringStream("");
: try
: {
: FRecvString = "";
: FIdHTTP->Post(FURL, sendMessage, response);
: }
:
답변:
Indy와 Soap는 전혀 별개의 것입니다.
Soap는 XML 을 베이스로 해서 메세지를 주고 받기위한 형식을 정의해 놓은 것에 불과한 겁니다.
Indy는 간단하게 구현할 수 있는 Blocking 구조로 만들어져 있어서 초보자들이 사용하기에 쉽다는 것 이외에 특별한 장점이 없어요.
C++ 랭귀지 중급 이상 정도 되면, 비동기적으로 소켓을 처리하는 코드를 직접 만들어서 사용하지 Indy 같은 비효율적인
블러킹 구조의 라이브러리는 사용하지 않습니다.