Form Data Posten funktioniert nicht!



  • Hallo,
    ich habe mal wieder ein kleines Problem, mache jetzt schon fast zwei Tage dran rum.

    Ich habe ein php \1:

    <html>
    <head>
    </head>
    <body>
    
    <?php echo $_POST["nme"]; ?>
    <br>
    <?php echo $_POST["pst"]; ?>
    
    </body>
    </html>
    

    und das ist meine c++ Funktion zum posten:

    wstring Post()
    {
    	HINTERNET hInternet;
    	HINTERNET hConnect;
    	HINTERNET hRequest;
    	wstringstream Data;
    
    	hInternet = InternetOpen(L"Post Test", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
    	if(!hInternet)
    	{
    
    	}
    
    	hConnect = InternetConnect(hInternet, L"www.software.palmasol.net", INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
    	if(!hConnect)
    	{
    
    	}
    
    	wstring url = L"/Form.php";
    	hRequest = HttpOpenRequest(hConnect, L"POST", url.c_str(), L"", L"", 0, INTERNET_FLAG_RELOAD | INTERNET_FLAG_NO_CACHE_WRITE, 1);
    	if(!hRequest)
    	{
    
    	}
    
    	wstring data = L"nme=hello123&pst=thank";
    
    	HttpAddRequestHeaders(hRequest, L"Content-Type: application/x-www-form-urlencoded", -1 , HTTP_ADDREQ_FLAG_ADD);
    
    	BOOL bSend = HttpSendRequest(hRequest, NULL, 0, (void*)data.c_str(), data.length());
    	if(!bSend)
    	{
    
    	}
    
    	for (;;)
        {
            char szData[8192];
            DWORD dwBytesRead;
            BOOL bRead = InternetReadFile( hRequest, szData, sizeof(szData)-1, &dwBytesRead );
            if ( bRead == FALSE  ||  dwBytesRead == 0 )
    		{
    
    			break;
    		}
    		szData[dwBytesRead] = 0;
    		int nSize = MultiByteToWideChar(CP_UTF8, 0, szData, dwBytesRead + 1, NULL, 0);
    		wchar_t *lpszText = new wchar_t[nSize];
    		// Convert UTF-8 string to wide string
    		::MultiByteToWideChar(CP_UTF8, 0, szData, dwBytesRead, lpszText, nSize);
    		// Terminate string. buffer may be not NULL terminated.
    		lpszText[nSize - 1] = L'\0';
            Data << lpszText;
    		delete [] lpszText;
        }
    
    	wstring Result = Data.str();
    
    	return Result;
    }
    

    Das was vom Server zurück kommt ist das hier:

    <html>
    <head>
    </head>
    <body>
    
    <br>
    
    </body>
    </html>
    

    Vielen Dank
    Johannes



  • echo $_GET['asd'];

    ?!



  • Nein, das php script is richtig, und wenn ich eine form mache in html mit post und diesem file, dann gibt er ja das richtige aus. Also ist der Fehler irgendwo in dem c++ code, ich weis aber nicht wo!



  • Ich nutze in solchen Fällen immer Wireshark um zu schauen, was tatsächlich zum Server geht. Damit kann man dann schonmal rauskriegen, welcher Codeteil evtl. Probleme macht.



  • Weis den keiner was der Fehler sein könnte? oder bin ich hier der erste der einen Form Data Post versucht??? 😕



  • Ich habe den Fehler dan jetzt doch selbst gefunden: ich muss die data nicht als const wchar_t * übergeben sondern als const char *.


Log in to reply