لا يعمل وينتب عندما لا يحتوي اسم المضيف على شبكة الاتصالات العالمية.(خطأ 12029)
-
07-09-2020 - |
سؤال
أنا اختبار هذا المثال وينتب من http://msdn.microsoft.com/en-us/library/aa384270%28v=vs.85%29.aspx
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, L"www.microsoft.com",
INTERNET_DEFAULT_HTTPS_PORT, 0 );
// Create an HTTP request handle.
if( hConnect )
hRequest = WinHttpOpenRequest( hConnect, L"GET", NULL,
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 );
أن يعمل بشكل جيد ولكن إذا كنت تأخذ من شبكة الاتصالات العالمية.من عند www.microsoft.com أحصل على خطأ 12029 خطأ, ما هو السبب في ذلك?
سوف تعمل جميع المواقع مع وينتب في حالة استخدام شبكة الاتصالات العالمية.?لأن بعض المواقع لا تستخدم شبكة الاتصالات العالمية ، لم أتمكن من العثور على أي الآن ولكن رأيت بعض المواقع التي أظهرت "الخادم غير موجود" على المتصفح عند الوصول مع شبكة الاتصالات العالمية.لكنهم عملوا دون ذلك.
المحلول
microsoft.com إرجاع أ 301 Moved Permanently
رأس ، للحصول على وينتب لتكريم ذلك وإعادة توجيه إلى ورل في Location:
رأس (شبكة الاتصالات العالمية.) تحتاج إلى استخدام WinHttpSetOption
لتعيين المناسبة WINHTTP_OPTION_REDIRECT_*
الخيار (الخيارات).