لا يعمل وينتب عندما لا يحتوي اسم المضيف على شبكة الاتصالات العالمية.(خطأ 12029)

StackOverflow https://stackoverflow.com/questions/6071396

سؤال

أنا اختبار هذا المثال وينتب من 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_* الخيار (الخيارات).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top