WinHTTP Problem - hostName und objectName



  • Hallo Community,

    Ich möchte einen recht simple GET (später dann POST) Anfragemachen an funpic.de machen. Jedoch funktioniert dies nicht.

    Ich habe schon funpic.de, www.funpic.de, http://funpic.de, http://www.funpic.de probiert, nichts klappt.

    C++:
    ERROR_WINHTTP_CANNOT_CONNECT 12029 Returned if connection to the server failed.
    

    Finde leider den Fehler nicht, da es mit www.google.de prima klappt!

    Der Code ist von hier:
    http://msdn.microsoft.com/en-us/library/aa384270(VS.85).aspx

    #include <windows.h>
    #include <Winhttp.h>
    
    #include <iostream>
    using namespace std;
    
    int main(wchar_t **argv, int argc)
    {
        LPCWSTR pswzServerName =  L"funpic.de";
    	LPCWSTR pswzObjectName = L"";
    
    	DWORD dwSize = 0;
    	DWORD dwDownloaded = 0;
    	LPSTR pszOutBuffer;
    	BOOL  bResults = FALSE;
    	HINTERNET  hSession = NULL, 
    	hConnect = NULL,
    	hRequest = NULL;
    
    	// Use WinHttpOpen to obtain a session handle.
    	hSession = WinHttpOpen( L"WinHTTP Example/1.0", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY,
    						WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0 );
    
    	// Specify an HTTP server.
    	if( hSession )
    		hConnect = WinHttpConnect( hSession, pswzServerName, INTERNET_DEFAULT_HTTPS_PORT, 0 );
    
    	// Create an HTTP request handle.
    	if( hConnect )
    		hRequest = WinHttpOpenRequest( hConnect, L"GET", pswzObjectName, NULL, WINHTTP_NO_REFERER, 
    									WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE );
    
    	// Send a request.
    	if( hRequest )
    		bResults = WinHttpSendRequest( hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0,
    									WINHTTP_NO_REQUEST_DATA, 0, 0, 0 );
    
    	// End the request.
    	if( bResults )
    		bResults = WinHttpReceiveResponse( hRequest, NULL );
    
    	// Keep checking for data until there is nothing left.
    	if( bResults )
    	{
    		do 
    		{
    			// Check for available data.
    			dwSize = 0;
    			if( !WinHttpQueryDataAvailable( hRequest, &dwSize ) )
    				printf( "Error %u in WinHttpQueryDataAvailable.\n", GetLastError( ) );
    
    			// Allocate space for the buffer.
    			pszOutBuffer = new char[dwSize+1];
    			if( !pszOutBuffer )
    			{
    				printf( "Out of memory\n" );
    				dwSize=0;
    			}
    			else
    			{
    				// Read the data.
    				ZeroMemory( pszOutBuffer, dwSize+1 );
    
    				if( !WinHttpReadData( hRequest, (LPVOID)pszOutBuffer, 
    								dwSize, &dwDownloaded ) )
    					printf( "Error %u in WinHttpReadData.\n", GetLastError( ) );
    				else
    					printf( "%s", pszOutBuffer );
    
    					// Free the memory allocated to the buffer.
    				delete [] pszOutBuffer;
    			}
    		} while( dwSize > 0 );
    	}
    
    	// Report any errors.
    	if( !bResults )
    	printf( "Error %d has occurred.\n", GetLastError( ) );
    
    	// Close any open handles.
    	if( hRequest ) WinHttpCloseHandle( hRequest );
    	if( hConnect ) WinHttpCloseHandle( hConnect );
    	if( hSession ) WinHttpCloseHandle( hSession );
    
    	cin.get();
    	return 0;
    }
    


  • nt2005 schrieb:

    Jedoch funktioniert dies nicht.

    Du machst was falsch.

    Wenn dir die Antwort nicht genügt, solltest du genau erklären, was "funktioniert nicht" heißt.

    Abgesehen davon bist du im falschen Forum.



  • Oh, das wusste ich nicht mit dem falschen Forum.

    ERROR_WINHTTP_CANNOT_CONNECT 12029 Returned if connection to the server failed.
    

    Normalerweise erhalte ich den HTML-Code, bei funpic jedoch nicht.



  • Du versuchst eine https-Verbindung aufzubauen (INTERNET_DEFAULT_HTTPS_PORT, WINHTTP_FLAG_SECURE). Das Protokoll wird von www.google.de, aber z.B. nicht von www.funpic.de angeboten.



  • Genau das war der Fehler. Vielen Dank!


Anmelden zum Antworten