자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 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 15913
공지 유용한 관련 사이트 관리자2 2014.03.20 54718
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 98172
2019 windows 10 과 windows 7 에서 query 시 속도 차이가 발생합니다.. 델파이뿌셔야함 2020.07.21 270
2018 [질문] XE7 에서 핸드폰이 Target Platforms(Androiid) - Android - Android SDK 22.3 32bit 에 접속되지 않습니다 [2] file delphi 2016.04.17 271
2017 [델파이 부트캠프] 윈도우모바일 10 앱 제작도 가능한가요? 험프리 2016.09.30 271
2016 퀵레포트에 관해서..? [2] 헨씀히포 2017.10.19 271
2015 실행중 꺼지는 현상 [1] 포세가이 2019.04.06 271
2014 vcl 라이브러리를 firemonkey로 변환하는데 애를 먹습니다 ㅠ.ㅠ [1] 아크나톤 2019.04.21 271
2013 SOAP/WSDL 질문드립니다. file 마이다스준 2020.04.09 271
2012 Embarcadero RAD Studio 10 Seattle에서 안드로이드 SDK 셋팅 문의 [1] 스미스 2015.12.22 271
2011 (안드로이드)질문드립니다. [2] 힘을내요슈퍼파워 2019.06.05 272
2010 안드로이드 9.0 버젼일때 앱 튕기는 현상 [2] 희망나라 2020.03.06 272
2009 IBLite 연결이 잘 안되네요~ [6] file 아놀드 2016.01.07 272
2008 [FireDAC][Phys]-300. Driver [ORACLE] is not registered. Correct driver ID or define [ORACLE] virtual driver in FDDriver.ini [1] 나마 2020.08.05 272
2007 윈8에서 BDE실행시 화면에 보이지않는 이유가 뭘까요? [1] 비웅 2016.08.16 273
2006 제공해주신 delphicbuilder10_3_2_496593b.iso 파일로 설치하니 android SDK 설치가 왜안되는 것인지요? [4] file 화이부동 2019.08.11 273
2005 IOS 앱실행관련 문의사항입니다. ( 디바이스 연결 관련 ) [2] 궁금한사람 2019.09.06 273
2004 컴포넌트 인스톨 후 Palette에 올라오지 않는경우 [3] agbnielsen 2015.04.14 273
2003 XE8 IOS 9 컴파일에러입니다. silkroad99 2015.11.19 273
2002 델파이 프로페셔널버젼에서 로컬DB 개발작업이 가능한가요? [1] 드레곤 2016.06.09 274
2001 Delphi 10.2.2 Enterprise IB License 문의. [4] file 엔달 2018.02.13 274
2000 윈도우10 보안 업데이트 이후 FastReport 출력문제 박군80 2018.12.31 274