Daten mit "post" an Webserver senden
-
Ist es möglich aus meinem MFC-Programm daten direkt mit der "Post"-Methode an einen Webserver zu senden? (Dieser soll dann die Daten auswerten....)
-
Jep das geht, habs selber mal gemacht.
Ich kann leider den Link nicht mehr finden, bin aber auf was anderes gestoßen:
Hier der Link: http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q165/2/98.ASP&NoWebContent=1Und hier der Text, falls der Link irgendwann fehlerhaft sein sollte:
MORE INFORMATION
In many cases, the server does not respond appropriately if a Content-Type is not specified. For example, the Active Server Pages component of IIS 3.0 actually checks this header specifically for 'application/x-www-form- urlencoded' before adding form variables to the "Request.Form" object. This MIME/Content-Type indicates that the data of the request is a list of URL- encoded form variables. URL-encoding means that space character (ASCII 32) is encoded as '+', special character such '!' encoded in hexadecemal form as '%21'.Here is a snippet of code that uses the MFC WinInet classes to simulate a Form POST request:
CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded"); // URL-encoded form variables - // name = "John Doe", userid = "hithere", other = "P&Q" CString strFormData = _T("name=John+Doe&userid=hithere&other=P%26Q"); CInternetSession session; CHttpConnection* pConnection = session.GetHttpConnection(_T("ServerNameHere")); CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, _T("FormActionHere")); BOOL result = pFile->SendRequest(strHeaders, (LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());Without MFC, the same code translates to straight SDK calls as follows:
static TCHAR hdrs[] = _T("Content-Type: application/x-www-form-urlencoded"); static TCHAR frmdata[] = _T("name=John+Doe&userid=hithere&other=P%26Q"); statuc TCHAR accept[] = _T("Accept: */*"); // for clarity, error-checking has been removed HINTERNET hSession = InternetOpen("MyAgent", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); HINTERNET hConnect = InternetConnect(hSession, _T("ServerNameHere"), INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1); HINTERNET hRequest = HttpOpenRequest(hConnect, "POST", _T("FormActionHere"), NULL, NULL, accept, 0, 1); HttpSendRequest(hRequest, hdrs, strlen(hdrs), frmdata, strlen(frmdata)); // close any valid internet-handlesHoffe, konnte dir helfen
Grüße Rapha
-
Vielen Dank für den Tipp! Aber wie kann ich nun die Webseite aufrufen, also die Daten in meinem Explorer auch darstellen....
-
Vielleicht drücke ich mich auch ein bisschen Ungeschickt aus, ich will einfach eine Webseite im Standard-Browser darstellen, die aber von meiner Anwendung mit einem "Post"-Action aufgerufen wird....
-
Hi
jetzt weiß ich, was du meinst.
Es gibt vielleicht die Möglichkeit über COM auf die Instance des Internet Explorers zuzugreifen.
Leider hab ich soetwas noch nicht gemacht.
Such mal bei Google nach einem BeispielHoffe, konnte dir helfen.
Grüße Raphael