자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 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 15766
공지 유용한 관련 사이트 관리자2 2014.03.20 54580
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 97985
1573 ios 앱 개발 아이콘 변경문의 [2] file 사랑남 2015.05.15 1938
1572 WINEXEC 관련해서 문의드립니다 [3] file jcitec 2015.05.16 1368
1571 IDFTP.List 한글 깨짐에 대한 답변 관련해서 .... [1] jcitec 2015.05.16 1011
1570 MacinCloud 설정에 문의 드립니다. [2] silkroad99 2015.05.18 540
1569 Delphi XE7 컴파일 시 용량 문의드립니다. [1] file zzakakzzakak 2015.05.19 444
1568 xe8에서 iphone device 연결방법문의? [2] silkroad99 2015.05.19 774
1567 [Q&A] XE8 세미나에서 나온 질문과 답변을 정리했습니다. 관리자 2015.05.20 496
1566 앱테더링으로 동일서브넷이 아닌 외부의 앱과 연결해 데이터를 주고 받을 수 있나요? [3] Humphery 2015.05.20 635
1565 XE 5 에서 DB 관련 문제 질문 입니다. [2] file 에프아이티최실장 2015.05.26 172
1564 모바일 디바이스에서 실행 시 검은화면에서 멈춰버립니다. 오류를 어떻게 확인하나요? Humphery 2015.05.27 2199
1563 HTML 에디터 관련 문의드립니다 [1] 배기현 2015.05.27 451
1562 델파이 XE8에서 쓰래드 디버깅 기능 향상된 것이 있나요? Humphery 2015.05.29 711
1561 델파이 메모리 누수(leak) 지점을 분석할 수 있나요? file Humphery 2015.05.29 1922
1560 XE8 iOS Device 에러나는 이유가? [1] silkroad99 2015.05.29 469
1559 [마이그레이션][델파이4>2007] DBCtrlGrid에 DBLookupCombo를 올린 후 콤보를 선택하면 ""Operation not allowed in DBCtrlGrid"" 오류가 발생하고 목록이 표시되지 않습니다. 어떻게 해결해야하나요? 험프리 2015.05.30 403
1558 scrollbox 문의? [2] silkroad99 2015.06.01 212
1557 Delphi XE7 Out of Memory 버그 [2] 겨울아이 2015.06.01 1199
1556 iOS app 종료는 어떻게 해야하나요? [2] silkroad99 2015.06.02 471
1555 webbrowser 이미지 보기 문의 [1] file 사랑남 2015.06.02 345
1554 안드로이드 어플리케이션 테스트 중 .... [1] file 에프아이티최실장 2015.06.04 207