1

私のC#コードでは、次のようにMSDNで定義されている InternetQueryOption を使用したいと考えています。

BOOL InternetQueryOption(
  __in     HINTERNET hInternet,
  __in     DWORD dwOption,
  __out    LPVOID lpBuffer,
  __inout  LPDWORD lpdwBufferLength
);

私のC#コードでは、次のように書きました。

    [DllImport("wininet.dll", SetLastError = true)]
            static extern bool InternetQueryOption(
            IntPtr hInternet, 
            uint dwOption, 
            IntPtr lpBuffer, 
            ref int lpdwBufferLength);

私のC++コード:

...
HINTERNET hRequest = HttpOpenRequest(hConnect, "POST","/BM-Login/auth-cup", NULL, NULL, accept, secureFlags, 0);
    DWORD dwFlags;
    DWORD dwBuffLen = sizeof(dwFlags);

    InternetQueryOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS,
            (LPVOID)&dwFlags, &dwBuffLen);

    dwFlags |= SECURITY_FLAG_IGNORE_UNKNOWN_CA;
      dwFlags |= SECURITY_FLAG_IGNORE_REVOCATION;
      dwFlags |= SECURITY_FLAG_IGNORE_CERT_DATE_INVALID;
      dwFlags |= SECURITY_FLAG_IGNORE_CERT_CN_INVALID | SECURITY_FLAG_IGNORE_WRONG_USAGE;

    InternetSetOption (hRequest, INTERNET_OPTION_SECURITY_FLAGS,
                            &dwFlags, sizeof (dwFlags) );
...

C#で同じものを書くには? ありがとう。(私の非常に悪い英語で申し訳ありません)

4

1 に答える 1

1

相互運用機能を介してこれを行うのではなく、管理されたコードを使用することをお勧めします。WebRequest Classを見てください。また、このクラスの使用方法の実例については、stackoverflow の質問C# https login and download fileに対する私の回答を参照してください。

于 2012-04-12T15:22:00.407 に答える