열심히 찾아보다보니 가끔은 답변이라고 어디를 찾아가세요. 해줄수가 있게 된거랄까요;; 뭐, 실제로 해결하는 경우는 거의 없다는게 문제네요.
헤더에다 void WebPostData ( TCppWebBrowser * CppWebBrowser, String sURL, String sPostData ); 를 선언해주시고 사용하면 잘 돌아갑니다.
저기 아래에 헤드부분은...-_-... 통신부분은 현재 전혀 불가능하다 싶기 때문에 딱히 해석해드리긴 힘들지만, 일단 작동 시험은 해봤구요. 잘 돌아갑니다. 작동시험은 XP에 amp환경으로 돌아가는 php에다가 뿌려봤구요. 한글,영어,숫자 모두 별 문제 없이 잘 연동되더군요.
헤드부분을 제대로 이해하려면 브라우저의 헤드부분정보를 좀 자세히 쳐다봐야겠는데.. 이래저래 기억도 가물가물하고 책으로 공부한게 아니라 학원에서 얼렁얼렁 넘어가서... -_-;;;
뭐, 그래도 컨텐트타입은 어플리케이션-x-www-폼-URL엔코딩-이거 그냥 문자열처리라는 뜻이군요..방금 찾았음;;-이고, 언어는 한국어. 인코딩은 gzip...뭐 이런 식인 걸 보면 별 문제 없을 성도 싶구요.
일단. php하고 연동된 것을 올려드릴게요. 아무것도 손 안댄거라서(....)모두 다 기본 네임. 프로젝트 1을 하다가 맹근거라 프로젝트2. 뭐 이런 거구. testcatch.php로 날려주는 형태입니다. testcatch.php도 같이 올렸어요.(.... 저걸 코딩했다고 하자면 참으로 뻘쭘해지긴 하네요..;;;)
하여간. 자꾸보다보면 어떤 식으로 익스플로러가 돌아가는 지 알것도 같아서 좋습니다. 이거...
p.s BSTR bstrHeaders = NULL;
이 부분때문에 안쓰는 놈입니다 위험이 뜨는데요. 그냥 =NULL부분을 지워도 작동에는 문제가 없습니다.
... 하지만, 초반에 NULL로 초기화하는게 더 안정적으로 보이는 면도 있긴 하고.... 설정에 따라서 어찌 될지 모르겠어요. 올린 예제에선 빼버렸지만, 그냥 넣어주는게 오히려 안전할지도 모르겠습니다. 뭐 이것도 저것도 마음에 안들면 순서를 바꿔서
WideString Head = "Content-Type: application/x-www-form-urlencoded\r\n"
"Accept-Language: ko\r\n"
"Accept-Encoding: gzip, deflate\r\n";
BSTR bstrHeaders = SysAllocString(Head);
이런식으로 처리해도 괜찮을지도....;;
이성제 님이 쓰신 글 :
: 2HB님! 요즘에 활동 열씸히 하시네욥 ㅎ
:
: 근대 이거 어떻게 연동 하셨는지??
:
: WebPostData는 사용자 정의 함수가 아닌가요? 선언 할때 애러나는데
:
: 특별히 다른 컴포넌트를 설치 해야하나?
:
: 그리고
: : WideString Head = "Content-Type: application/x-www-form-urlencoded\r\n"
: : "Accept-Language: ko\r\n"
: : "Accept-Encoding: gzip, deflate\r\n";
: : //"Referer:
http://127.0.0.1/login.htm\r\n";
: 이부분에 뭔가 문제가 있지 않나요??
:
: 잘되나..?? ㅎ 어떻게 애러 처리를 해야 하는지 ㅎ
:
: 해더 부분도 좀 올려 주세요 ㅎ
:
: 아님 프로잭트 하나 해서 올려 주세요 ㅎ
:
: 어떻게 짜셧나 보게요 ㅎ 그럼 ㅅㄱ ㅎ
:
:
:
:
: 2HB 님이 쓰신 글 :
: : 38946번 글과 그 밑에 붙어있는 글을 보시면 여기에 대한 내용이 나와있습니다.
: : 저도 한번 사용해 본 결과 잘 사용되구요. 다만 중요(하진 않은)한 것은 저기에 있는 구분자를 &로 하면 안되고 &&를 쓰셔야 하더군요.
: : 그니까.. 이런 식으로 쓰시면 됩니다.
: :
: : /*38946번에 있는 함수 그대로 복사한 것 -_-;;;; */
: : void TForm1::WebPostData ( TCppWebBrowser * CppWebBrowser, String sURL, String sPostData )
: : {
: : BSTR bstrHeaders = NULL;
: : TVariant vFlags = {0}, vTargetFrameName={0}, vPostData={0}, vHeaders={0};
: : LPSAFEARRAY psa;
: : LPCTSTR cszPostData = sPostData.c_str();
: : UINT cElems = lstrlen (cszPostData);
: : LPSTR pPostData;
: : LPVARIANT pvPostData;
: :
: :
: : WideString Head = "Content-Type: application/x-www-form-urlencoded\r\n"
: : "Accept-Language: ko\r\n"
: : "Accept-Encoding: gzip, deflate\r\n";
: : //"Referer:
http://127.0.0.1/login.htm\r\n";
: :
: : bstrHeaders = SysAllocString(Head);
: :
: : if (!bstrHeaders)
: : {
: : Application->MessageBox("Could not allocate bstrHeaders", "Warning", MB_OK | MB_ICONWARNING);
: : return;
: : }
: :
: : V_VT(&vHeaders) = VT_BSTR;
: : V_BSTR(&vHeaders) = bstrHeaders;
: :
: : pvPostData = vPostData;
: :
: : if (pvPostData)
: : {
: : VariantInit(pvPostData);
: :
: : psa = SafeArrayCreateVector (VT_UI1, 0, cElems);
: : if (!psa)
: : {
: : return;
: : }
: :
: : SafeArrayAccessData(psa, (LPVOID*)&pPostData);
: : memcpy(pPostData, cszPostData, cElems);
: : SafeArrayUnaccessData(psa);
: :
: : V_VT(pvPostData) = VT_ARRAY | VT_UI1;
: : V_ARRAY(pvPostData) = psa;
: : }
: : CppWebBrowser->Navigate2(&(TVariant)sURL, &vFlags, &vTargetFrameName, &vPostData, &vHeaders);
: : }
: : /*38946번에 있는 함수 그대로 복사한 것 -_-;;;; */
: :
: : void __fastcall TForm1::Button1Click(TObject *Sender)
: : {
: : String sTemp = "";
: :
: : sTemp = "userid=" +Edit1->Text.Trim()+
: : "&&passwd=" +Edit2->Text.Trim()+
: : "&&sender=" +Edit3->Text.Trim()+
: : "&&reciver=" +Edit4->Text.Trim()+
: : "&&message="+Edit5->Text.Trim()+
: : "&&receiver_name="+Edit6->Text.Trim()+
: : "&&email2="+Edit7->Text.Trim();
: :
: : WebPostData ( WebBrowser, "
http://www.winc7788.co.kr/MSG/send/web_admin_send.htm",sTemp);
: : }
: :
: : 이성제 님이 쓰신 글 :
: : : 포맷 메소드를 쓰면 된다고 하던데.. 잘 모르겠습니다. (머쓱)
: : :
: : : form method=post name=all target=hidfrm action=http://www.winc7788.co.kr/MSG/send/web_admin_send.htm>
: : : input type=hidden name=userid value=문자나라아이디>
: : : input type=hidden name=passwd value=문자나라비밀번호>
: : : input type=hidden name=sender value=보내는번호>
: : : Input type=hidden name=receiver value=받는번호>
: : : input type=hidden name=message value=보내는메시지>