-1

wininet.hVisual Studio 2010 Express でC++ とインストルメンテーションを使用して HTML コードを読み込もうとしています。URL 文字列を作成するには、次のように記述します。

HINTERNET hConnect =::InternetConnect(
    hInternet, 
    _T("stackoverflow.com"), 
    INTERNET_DEFAULT_HTTP_PORT, 
    NULL, 
    NULL, 
    IINTERNET_SERVICE_HTTP, 
    0, 
    1u
);

URL がパスやプロトコルのない単なるドメインである場合、プログラムはうまく機能しますが、URL を から に変更するとstackoverflow.comhttp://stackoverflow.com/questionsコードが突然機能しなくなります。

HttpSendRequest(hRequest, NULL, 0, NULL, 0)単純に false を返します。

パラメータでさまざまなバリエーションを試し、Google を精査しましたが、行き詰まっているだけです。誰でも洞察を提供できますか?

4

1 に答える 1

1

ドキュメントInternetConnectは、URL をダウンロードするためではなく、サーバーへの FTP または HTTP 接続を確立するために使用されると書かれています。

そのため、lpszServerNameパラメーターは次のように文書化されています。

インターネット サーバーのホスト名を指定するヌル終了文字列へのポインター。または、文字列にサイトの IP 番号を ASCII ドット付き 10 進形式 (たとえば、11.0.1.45) で含めることもできます。

したがって、サーバーのホスト名または IP アドレスを使用する必要があり、URL を使用することはできません。

URL のパス部分 ( /questions) は、呼び出しによって返されるを使用して行う呼び出し ( docs )のlpszObjectNameパラメーターとして使用する必要があります。HttpOpenRequesthConnectInternetConnect

于 2012-11-29T18:55:44.937 に答える