자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 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 15759
공지 유용한 관련 사이트 관리자2 2014.03.20 54576
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 97973
2719 Delphi Rio 10.3.3 AAB 로컬서비스 실행시 문제점 해결 방법문의 [3] silkroad99 2019.12.23 343
2718 delphi 10.2.3 도쿄 다국어 관련 질문입니다. [10] file 신우 2018.05.28 464
2717 rio 10.3.3버전에서 다국어 작성중입니다. 봐주세요. [1] 델파이_사랑 2019.12.27 198
2716 indy udp 서버로 수신한 데이터에 대한 응답을 udp로 보내는 echo 서버를 만들었는데 [2] 금목암 2019.11.15 826
2715 64 bit Platform 추가 설치 가능한가요?? [1] jsssssslee 2019.12.24 260
2714 Statusbar 의 Bevel 이 먹히지 않습니다. 오랜동안 2019.12.25 133
2713 EMS 서버를 운영서버로 전환하는 중 에러 [1] 봉프 2019.12.23 306
2712 MDI폼에서 팝업창 표시..? [2] 헨씀히포 2019.12.22 274
2711 Tvalue의 데이터 관련 문의 건 [3] 한태수 2019.12.23 158
2710 모바일에서 datasnap을 이용해 데이터를 가져올때 [2] 종결자 2019.12.16 173
2709 bitmap 용량 줄여서 blob에 저장하기 [3] 종결자 2019.12.15 377
2708 tcxgrid Custom Filter 사용시 체크 [1] 가나다 2019.12.12 467
2707 Firemonkey Stringgrid 표현 [1] 넓다란세상 2019.12.15 222
2706 안드로이드 이미지 공유시 문제 [1] 델마당쇠 2019.12.16 235
2705 firedac으로 mssql 연결 쿼리시 속도가 너무 느림 [1] 빅비스 2019.12.19 401
2704 sqlconnection 사용법을 알고 싶습니다. [1] 덩어리2 2019.12.14 190
2703 Rio 10.3 에서 FireDAC Interbase 접속문제 [2] file 이치고 2019.12.18 242
2702 파이어몽키 소켓통신 - 질문수정 [2] hs 2019.12.17 293
2701 델파이 64비트에서 android:debuggable 옵션을 false 로 하는 방법 좀 가르쳐주세요. [1] 델파이_사랑 2019.12.16 227
2700 비콘 pky4437 2019.12.16 105