질문 님이 쓰신 글 :
: void TFormMain::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;
:
:
: bstrHeaders = SysAllocString(L"Content-Type: application/x-www-form-urlencodedrn");
: 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);
: }
:
:
: 이런 소스를 사용하면 가능하다고 해서 실험해 봤는데,
:
: 새창은 떠도 POST 로 값이 넘어가질 않습니다.
: 함수 호출 할 때 넘겨주는 인자중에 String sPostData 에 어떤 식으로 넘겨줘야 하나요??
:
:
:
: WebPostData ( WebBrowser, "
http://www.naraman.com/test.php?value=33", "" );
:
: 이렇게 하면 GET 방식으로 value 에 33 이 들어옵니다.
:
: 그런데
:
: WebPostData ( WebBrowser, "
http://www.naraman.com/test.php?", "value=33" );
: 이렇게 하면 POST 로 값이 넘어가질 않습니다..
:
: --;; POST 로 넘겨줄값은 어떤식으로 넘겨줘야 할까요??
제가 다시 해보니까,
bstrHeaders = SysAllocString(L"Content-Type: application/x-www-form-urlencodedrn");
이 부분을
WideString Head = "Content-Type: application/x-www-form-urlencoded\r\n"
"Accept-Language: ru\r\n"
"Accept-Encoding: gzip, deflate\r\n";
//"Referer:
http://127.0.0.1/login.htm\r\n";
bstrHeaders = SysAllocString(Head);
이렇게 바꿔주니까 되는군요??
헤더를 저렇게 바꿔야 되는 이유가 뭔지? 그리고 저 헤더에 설정한 값들의 의미가 뭔지 궁금합니다