Q&A

  • TWebBrowser 에서 URL 오픈시 post 방식으로 URL을 오픈할려면?
TWebBrowser를 이용하여 URL 오픈시 post 방식으로 URL을 오픈할려면 어떻게 해야하는지 모르겠습니다.



제가 현재 보내려는 데이타가 워낙 많아서

Browser.Navigate(WideString 'http://gzone.humanpia.com/sysinfo.asp?var1=' + Memo1.Text), Flags, Flags, Flags, Flags);



위와 같은 방식으로 URL을 오픈하면 데이타가 모두 출력되지 않더군요.



물론 Memo1의 내용이 너무 많아서 이겠지만, 메모의 모든 내용을 URL에 보여주고 싶은데 고수님들의 조언 부탁드립니다.

3  COMMENTS
  • Profile
    화랑 2001.02.25 08:09
    postdata 가 아마도 olevariant가 아닌가요?



    겉으로는 olevariant로 되어 있어도 아마 내부적으로는



    다르게쓸겁니다.. 그것을 확인하시고 맞게 데이터를 전송하시면 될겁니다.





    정대연 wrote:

    > TWebBrowser를 이용하여 URL 오픈시 post 방식으로 URL을 오픈할려면 어떻게 해야하는지 모르겠습니다.

    >

    > 제가 현재 보내려는 데이타가 워낙 많아서

    > Browser.Navigate(WideString 'http://gzone.humanpia.com/sysinfo.asp?var1=' + Memo1.Text), Flags, Flags, Flags, Flags);

    >

    > 위와 같은 방식으로 URL을 오픈하면 데이타가 모두 출력되지 않더군요.

    >

    > 물론 Memo1의 내용이 너무 많아서 이겠지만, 메모의 모든 내용을 URL에 보여주고 싶은데 고수님들의 조언 부탁드립니다.

  • Profile
    정대연 2001.02.26 20:06
    쩝.. 초보의 설움인가요??

    넘 어렵네여...

    자세한 설명 부탁드리면 안될까여???



    답변 넘 감사합니다...





    화랑 wrote:

    > postdata 가 아마도 olevariant가 아닌가요?

    >

    > 겉으로는 olevariant로 되어 있어도 아마 내부적으로는

    >

    > 다르게쓸겁니다.. 그것을 확인하시고 맞게 데이터를 전송하시면 될겁니다.

    >

    >

    > 정대연 wrote:

    > > TWebBrowser를 이용하여 URL 오픈시 post 방식으로 URL을 오픈할려면 어떻게 해야하는지 모르겠습니다.

    > >

    > > 제가 현재 보내려는 데이타가 워낙 많아서

    > > Browser.Navigate(WideString 'http://gzone.humanpia.com/sysinfo.asp?var1=' + Memo1.Text), Flags, Flags, Flags, Flags);

    > >

    > > 위와 같은 방식으로 URL을 오픈하면 데이타가 모두 출력되지 않더군요.

    > >

    > > 물론 Memo1의 내용이 너무 많아서 이겠지만, 메모의 모든 내용을 URL에 보여주고 싶은데 고수님들의 조언 부탁드립니다.

  • Profile
    한원희 2001.02.28 03:52
    다음 사이트를 참고 하십시요...

    IE를 세부적으로 제어하는 방법을 잘 정리해 놓았더군요... ^^



    http://members.home.net/hfournier/





    질문에 대한 답은 다음과 같습니다.



    procedure TForm1.Navigate(stURL, stPostData: String; var wbWebBrowser: TWebBrowser);

    var

    vWebAddr, vPostData, vFlags, vFrame, vHeaders: OleVariant;

    iLoop: Integer;

    begin

    {Are we posting data to this Url?}

    if Length(stPostData)> 0 then

    begin

    {Require this header information if there is stPostData.}

    vHeaders:= 'Content-Type: application/x-www-form-urlencoded'+ #10#13#0;

    {Set the variant type for the vPostData.}

    vPostData:= VarArrayCreate([0, Length(stPostData)], varByte);

    for iLoop := 0 to Length(stPostData)- 1 do // Iterate

    begin

    vPostData[iLoop]:= Ord(stPostData[iLoop+ 1]);

    end; // for

    {Final terminating Character.}

    vPostData[Length(stPostData)]:= 0;

    {Set the type of Variant, cast}

    TVarData(vPostData).vType:= varArray;

    end;

    {And the other stuff.}

    vWebAddr:= stURL;

    {Make the call Rex.}

    wbWebBrowser.Navigate2(vWebAddr, vFlags, vFrame, vPostData,

    vHeaders);

    end; {End of Navigate procedure.}



    PostData에 대한 타입이 OleVariant 이지만, 내부적으로는 Byte Array의 레퍼런스라

    그냥 값을 넣어주면 안되고, 위와 같이 문자열을 Byte Array Ref로 바꾸어 주어야

    제대로 포스팅이 됩니다. ^^





    정대연 wrote:

    > 쩝.. 초보의 설움인가요??

    > 넘 어렵네여...

    > 자세한 설명 부탁드리면 안될까여???

    >

    > 답변 넘 감사합니다...

    >

    >

    > 화랑 wrote:

    > > postdata 가 아마도 olevariant가 아닌가요?

    > >

    > > 겉으로는 olevariant로 되어 있어도 아마 내부적으로는

    > >

    > > 다르게쓸겁니다.. 그것을 확인하시고 맞게 데이터를 전송하시면 될겁니다.

    > >

    > >

    > > 정대연 wrote:

    > > > TWebBrowser를 이용하여 URL 오픈시 post 방식으로 URL을 오픈할려면 어떻게 해야하는지 모르겠습니다.

    > > >

    > > > 제가 현재 보내려는 데이타가 워낙 많아서

    > > > Browser.Navigate(WideString 'http://gzone.humanpia.com/sysinfo.asp?var1=' + Memo1.Text), Flags, Flags, Flags, Flags);

    > > >

    > > > 위와 같은 방식으로 URL을 오픈하면 데이타가 모두 출력되지 않더군요.

    > > >

    > > > 물론 Memo1의 내용이 너무 많아서 이겠지만, 메모의 모든 내용을 URL에 보여주고 싶은데 고수님들의 조언 부탁드립니다.