자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 바쁜 와중에도 답변을 주시는 분들께 감사 댓글 필수
-----------------------------------------------------------------------------------------------

 

미들웨어로 XML을 받아서 델파이 10.1 베를린 에서 구현

 

  코드 입력후 검색버튼 클릭하면 코드명 표시해주는 프로그램 입니다.

     코드: 105146

     코드명:  [삭제]드립서버300ML[어라운지]EA   

 

1. 윈도우 플랫폼에서 프로그램 실행을 하고 

   코드: 105146 입력 => 검색버튼 클릭

   "[삭제]드립서버300ML[어라운지]EA"  로 정상적으로 표시되는데

 

   플랫폼을 안드로이드로 변경하고

   스마트폰에서 프로그램실행해서 검색버튼을 클릭하면 <그림2>와 같이 오류가 나는데 여러방법을 사용해봐도 

   해결이 안되어서 문의드립니다.

    

 

<그림1> 플랫폼 윈도우에서 실행 

%ED%99%94%EB%A9%B41.png?inlineContentTyp 

 

<그림2> 플랫폼: 안드로이드에서 실행하고 검색버튼을 클릭하면 오류남

%ED%99%94%EB%A9%B42.png?inlineContentTyp 

 

 

------- source ---------------

 

procedure TForm1.Button1Click(Sender: TObject);

var

  L_IPGO_CNF, gLOGIN_CHEK,Maeil_URL : String;

 

  XMLBodyNode, XMLDataNode, XMLListNode, XMLRowNode, XMLColumnNode: IXMLNode;

  Node: IXMLNode;

 

  PutData : TStringStream;

  DResult : TStringStream;

  Indy    : TIdHTTP;

 

  ii, iCnt : integer;

  Key_Name, Key_Value : String;

  L_RETN_VLUE : String;

 

  XMLRqst     : String; // 170921

  IdCookieManager: TIdCookieManager; // 170921

begin

  XMLRqst := '<root company="belvew"/>'; // 170921

  Maeil_URL  := 'http://url-ip/DelphiCommand';

 

  if ED_ITM_CD.Text = '' then

  begin

    ED_ITM_NM.Text := '';

    Exit;

  end;

 

  PutData := TStringStream.Create();

  DResult := TStringStream.Create(XMLRqst, TEncoding.UTF8); // UTF8

 

  Indy := TIdHttp.Create;

  Indy.CookieManager   := idCookieManager;

  Indy.ReadTimeout     := 60000;{ IdTimeoutInfinite; }    // 170921

  Indy.ConnectTimeout  := 60000;                          // 170921

  Indy.HandleRedirects := True;                           // 170921

  Indy.Compressor := TIdCompressorZLib.Create(Indy);      // 170921

 

  Try

    Memo1.Lines.text := 'SELECT NVL(ITM_CD,' + '''' + 'Z' + '''' + ')' + ' ITM_CD' +

    ' ,NVL(ITM_NM,' + '''' + 'Z' + ''''+ ')' + ' ITM_NM' +

    ' FROM A_ITM_TEST' +

    ' WHERE ITM_CD = ' + ''''+ ED_ITM_CD.Text + '''';

 

 

    // 각 인자들을 &로 연결시켜줍니다.

    Indy.Request.ContentType := 'application/x-www-form-urlencoded';

    gLOGIN_CHEK := '&user_idid=' + '12352' + '&sabn_pswd=' + '11';

    PutData.WriteString('command=DelphiQueryCommand' + gLOGIN_CHEK +'&query=' + HTTPEncode(Memo1.Text));

    // POST시킵니다. 리턴된 결과 XML은 DResult에 저장됩니다.

    Indy.Post(Maeil_URL,PutData,DResult);

 

    XMLDoc.LoadFromStream(DResult); //===> 이부분에서 오류납니다.

 

    XMLDoc.Active:=True;

    XMLBodyNode:= XMLDoc.ChildNodes.FindNode('result');

    XMLDataNode:= XMLBodyNode.ChildNodes.FindNode('status_detail');

    XMLListNode:= XMLDataNode.ChildNodes.FindNode('list');

 

 

    for ii := 0 to XMLBodyNode.ChildNodes.Count - 1 do

    begin

      Memo1.Lines.Add('i');

      if XMLBodyNode.ChildNodes.Nodes[ii].NodeName = 'status'  then

      begin

        if XMLBodyNode.ChildNodes.Nodes[ii].NodeValue = 'OK' then

        begin

            //처리로직

          if XMLListNode.ChildNodes.Count > 0 then

          begin

            XMLRowNode:= XMLListNode.ChildNodes.FindNode('row');

 

            repeat

 

              begin

                XMLColumnNode:= XMLRowNode.ChildNodes.FindNode('column');

 

                repeat

                  Key_Name := '';

                  Key_Value := '';

 

                  Key_Name := XMLColumnNode.AttributeNodes.Get(0).NodeValue;

                  Key_Value := XMLColumnNode.ChildNodes[0].NodeValue;

 

                  if UpperCase(Key_Name) = 'ITM_CD' then

                  begin

                    if Key_Value = 'Z' then ED_ITM_CD.Text := ''

                    else ED_ITM_CD_1.Text := Key_Value;

                  end

                  else

                  if UpperCase(Key_Name) = 'ITM_NM' then

                  begin

                    if Key_Value = 'Z' then ED_ITM_NM.Text := ''

                    else ED_ITM_NM.Text := Key_Value;

                  end;

 

                  XMLColumnNode := XMLColumnNode.NextSibling;

 

                until XMLColumnNode = nil;

              end;

 

              XMLRowNode := XMLRowNode.NextSibling;

 

            until XMLRowNode = nil;

          end

          else

          begin

          end;

        end

        else

        if XMLBodyNode.ChildNodes.Nodes[ii].NodeValue = 'LOGIN_FAIL' then   // LOGIN_FAIL시 다시 로그인

        begin

          ShowMessage('서버와의 접속이 끊겼습니다. 다시 로그인 하세요');

        end

        else

        if XMLBodyNode.ChildNodes.Nodes[ii].NodeValue = 'ERROR' then

        begin

          ShowMessage(XMLBodyNode.ChildNodes.Nodes[0].NodeValue);

        end;

      end;

    end;

 

  finally

    // 메모리에서 해제

    PutData.Free;

    DResult.Free;

    Indy.Free;

  end;

end;

 
번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 15768
공지 유용한 관련 사이트 관리자2 2014.03.20 54582
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 97993
3179 빌더가 설치되지 않은 피시에서 메모리에러 발생 file lamp 2019.12.10 88
3178 출력이 보이지 않습니다. [1] yawayo 2020.06.29 88
3177 실행되지만 레퍼런스에 없는 system.default [1] 임병기 2017.03.26 88
3176 [시애틀 출시세미나] FireDAC의 기능을 자세히 살펴보고 싶어요. Humphery 2015.09.11 90
3175 [10.2.2 세미나] 리눅스 app 언제 지원되나요? 험프리 2018.01.18 90
3174 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 22 - Exercise 3 [2] 관리자 2016.05.27 91
3173 [10.2 도쿄 출시세미나] 델파이 리눅스앱은 기본 공유(동적)라이브러리 방식으로 빌드되나요? 험프리 2017.04.06 92
3172 문의드려요 [1] 중국어사전 2018.02.06 92
3171 TSaveEvent로 jpg저장하는 기능관련 문의의 글 [1] file 영우CnI 2019.11.28 92
3170 안녕하세요 datasnap 관련 질문드려요 :) [1] vast 2017.07.03 92
3169 10.3 TADOStoreProc.Parameters.FindParam('MEMBER_ID').Value 시 오류 [1] 파란김치 2018.12.14 93
3168 시애틀 TBeacon컴포넌트가 같은 기종의 모바일에서 작동 유무가 다릅니다. 김태윤 2016.10.19 94
3167 IOS Device 컴파일 관련 문의 mskim 2018.12.10 94
3166 [IoT 세미나] 비콘에 대해 알고 싶습니다. Humphery 2015.09.04 94
3165 ArcGIS - Delphi Component 문의 연일하 2016.10.13 95
3164 xe10 시애틀 컴파일시 에러메세지 확인 부탁드립니다. kerry 2016.07.13 96
3163 초대합니다! 새로운 RAD Studio : 윈도우 10 혜택을 누리세요! file 관리자 2015.08.28 96
3162 [시작하는 사람들을 위한 델파이 프로그래밍] 모듈 24 - Exercise 3 [2] 관리자 2016.05.27 96
3161 [10.2 도쿄 출시세미나] 리눅스에서 pascal로 코딩시, c++로 개발된 리눅스용 라이브러리 사용하는법 험프리 2017.04.06 96
3160 디자인타임시 그림파일이 로딩되지 않습니다. 바다를향해 2018.12.26 96