고맙습니다.
아직 적용은 못 해 봤는데..
제가 원하는 방향이군요.
즐거운 하루 되세요.
방태윤 님이 쓰신 글 :
: encoding(인가 용어가?)은 NMURL 를 사용하사면 됩니다.
: 그리고 모두 encoding 이 되야하는것은 아닙니다.
: 데이터부분만 encoding이 되야 할겁니다.
:
http:www.aaa.co.kr?name=홍삼원&juso=경기도김포
: 라면 홍삼원,경기도김포 만 encoding 되어야 할것입니다.
:
: 참고로 저는 NMHTTP 로 post하는데 실패했습니다.get은 되는거 같것데..
: 결국 api로 했습니다...
:
: 해보시고 안되면 아래와 같이 해보십시요....
:
: AnsiString __fastcall TForm1::conv(AnsiString s)
: {
: NMURL1->InputString = s;
: return NMURL1->Encode;
: }
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: HINTERNET hOpen, hConnect, hReq;
: DWORD dwSize, dwCode;
: int i;
: AnsiString post_str,szReturned;
:
: static char szData[10240];
:
: hOpen = InternetOpen("WebMessage", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
: if (!hOpen)
: { ShowMessage("InternetOpen");
: return;
: }
: hConnect = InternetConnect(hOpen, "상대방주소(www.yahoo.com)", INTERNET_DEFAULT_HTTP_PORT, "", "", INTERNET_SERVICE_HTTP, 0 , 0);
: if (!hConnect)
: { ShowMessage("InternetConnect");
: InternetCloseHandle (hOpen);
:
: return;
: }
: hReq = HttpOpenRequest(hConnect, "POST","받아올페이지(/servlet/xxx.xxx)", HTTP_VERSION, "", NULL, INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE, 0);
: if(!hReq)
: { ShowMessage("HttpOpenRequest");
: InternetCloseHandle (hConnect);
: InternetCloseHandle (hOpen);
: return;
: }
: AnsiString sHeader = "Content-Type: application/x-www-form-urlencoded\nAccept-Language: ko\n";
: bool su=HttpAddRequestHeaders(hReq,sHeader.c_str(),sHeader.Length(),HTTP_ADDREQ_FLAG_REPLACE | HTTP_ADDREQ_FLAG_ADD);
: if(!su)
: { ShowMessage("HttpAddRequestHeaders");
: InternetCloseHandle (hConnect);
: InternetCloseHandle (hOpen);
: return;
: }
:
: post_str="";
: post_str += "kind="+conv(Edit8->Text.Trim())+"&";
: .
: .
: .
:
: post_str += "name="+conv(Edit7->Text.Trim())+"&";
: post_str += "id="+conv(Edit38->Text.Trim());
: post_str +="\n";
:
:
: if (!HttpSendRequest (hReq, NULL, 0, (LPVOID) (LPCSTR) post_str.c_str(), post_str.Length()))
: { ShowMessage("HttpSendRequest");
: InternetCloseHandle (hReq);
: InternetCloseHandle (hConnect);
: InternetCloseHandle (hOpen);
: return;
: }
:
: dwSize = sizeof (DWORD);
: if ( !HttpQueryInfo (hReq, HTTP_QUERY_STATUS_CODE | HTTP_QUERY_FLAG_NUMBER, &dwCode, &dwSize, NULL))
: { ShowMessage("HttpQueryInfo");
: InternetCloseHandle (hReq);
: InternetCloseHandle (hConnect);
: InternetCloseHandle (hOpen);
: return;
: }
:
: do
: {
: if (!InternetReadFile (hReq, (LPVOID)szData, sizeof(szData) - 1, &dwSize) )
: { ShowMessage("InternetReadFile");
: InternetCloseHandle (hReq);
: InternetCloseHandle (hConnect);
: InternetCloseHandle (hOpen);
: return;
: }
:
: if (dwSize > 0)
: {
: szData [dwSize] = '\0';
: szReturned += szData;
: }
: }
: while (dwSize > 0);
:
: InternetCloseHandle (hReq);
: InternetCloseHandle (hConnect);
: InternetCloseHandle (hOpen);
:
: if (szReturned.AnsiPos("not a valid destination number"))
: { ShowMessage("not a valid destination number");
: return;
: }
: else if (szReturned.AnsiPos("has been sent successfully"))
: { ShowMessage("has been sent successfully");
: return;
: }
: Memo1->Lines->Add(szReturned);
:
: }
: wininet.lib 을 포함시켜야 될겁니다.
: 그거에 대한 내용은 여기서 찾아보시구요..
: 인터넷 여기저기를 뒤져서
: 몇개의 소스를 조합했더니만 겨우 해결했던걸로 기억됩니다.
: 도움이 되서 시간을 절약하셨으면 좋겠습니다.끝.
:
: 김대영 님이 쓰신 글 :
: : 제목대로 NMHTTP를 가지고 Post로 data를 보내려고 합니다.
: : 자꾸 오류가 나서 실제 packet을 따서 봤더니
: : data들이 전부 encoding되어 있더군요.
: :
: : encoding 된것 자체는 문제가 없는데,
: : 그 encoding 방식이 서버측에서 decoding하는 방식과 차이가 있더군요.
: : ('='나 '.' 등은 encoding 하지 않고 싶은데 자동으로 하고 있습니다)
: :
: : 이 자동 encoding이 NMHTTP 콤포넌트 레벨에서 하는 것인가요?
: : 아니라면 어떻게 하는 것이 좋을까요?
: :
: : 아시는 분들의 도움을 기다리겠습니다.
: :