WinHttpRequest を使用して HTTP ヘッダー情報、Referer およびその他の情報を偽造する Microsoft が XmlHttp オブジェクトをブロックしているため、一部の HTTP ヘッダー情報は偽造できませんが、WinHttp.WinHttpRequest.5.1 オブジェクトは実際にすべての http リクエストのヘッダー情報を正常に偽造できます。
msdn から、WinHttp.WinHttpRequest.5.1 が msxml 4.0 の基礎となるオブジェクトであることがわかりました。これは、WinHttpRequest の使用法が XmlHttp の使用法とほぼ同じであることを意味します。
WaitForResponse リクエストを非同期で送信する場合、このメソッドを使用してリクエストのプロセスを制御できます。指定された待機時間は、非同期送信メソッド SetTimeouts によって完了する値です。
サーバーサイドスクリプトでは、クライアントのようにコールバック関数を直接使用して非同期リクエストを制御することはできません。また、リクエストを待機するためにプログラムを一定時間スリープさせるための対応する関数もありません。戻る場合は、このメソッドを使用して一定時間待機できます。
次のようにコードをコピーします。
<%
ディムウィンHTTP
WinHttp = Server.CreateObject(WinHttp.WinHttpRequest.5.1) を設定します。
'パラメータを設定します
WinHttp.SetTimeouts 60000, 60000, 60000, 3000 '操作のタイムアウトを設定します
'WinHttp.SetTimeoutssolveTimeout、connectTimeout、sendTimeout、receiveTimeout
'resolveTimeout = 10000 'DNS 名解決のタイムアウト、10000 ミリ秒。
'connectTimeout = 10000 'Winsock 接続を確立するためのタイムアウト、10000 ミリ秒。
'sendTimeout = 120000 'データ送信のタイムアウト、120000 ミリ秒。
'receiveTimeout = 60000 '応答受信のタイムアウト、60000 ミリ秒。
WinHttp.Option(4) = 13056 'エラーフラグを無視します
WinHttp.Option(6) = False 'True の場合は、要求されたページがリダイレクトされるときに自動的にジャンプします。False の場合は、自動的にジャンプせず、サーバーから返される 302 ステータスをインターセプトします。
WinHttp.Open GET、http://www.baidu.com/、False 'GET または POST、Url、False 同期モード。真の非同期モード。
'HTTPヘッダー情報を作成する
WinHttp.SetRequestHeader Accept, */* 'データ型を受け入れる
WinHttp.SetRequestHeader Accept-Language, zh-cn,zh 'ユーザー システム言語
WinHttp.SetRequestHeader User-Agent、Mozilla/6.0 'ユーザー ブラウザ情報
WinHttp.SetRequestHeader Content-Type、application/x-www-form-urlencoded 'エンコード方式
WinHttp.SetRequestHeader リファラー、http://www.baidu.com/ 'ソース
WinHttp.SetRequestHeader Connection, Close 'Close = 接続を維持しない、Keep-Alive = 接続を維持する (永続的な接続)
'WinHttp.SetRequestHeader Accept-Encoding, gzip, deflate '送信すると、gzip、deflate の圧縮エンコーディングが返されます
'WinHttp.SetRequestHeader Content-Length, Len(Str) 'Post メソッドで使用されるコンテンツの長さ。
WinHttp.SetRequestHeader Cookie、テスト Cookie 'Set Cookie!
'データを送信する
WinHttp.Send 'ポストメソッド: WinHttp.Send (パラメータ)
WinHttp.WaitForResponse 'リターン要求を待ちます。XMLHTTP でも使用できます
'結果を出力
Response.Write WinHttp.Status '現在の HTTP ステータス
'Response.Write WinHttp.ResponseText 'テキストデータ
Response.BinaryWrite WinHttp.ResponseBody 'バイナリ データ ストリーム データ
%>
Option() 関連:
WinHttpRequestOption_UserAgentString = 0;
WinHttpRequestOption_URL = 1;
WinHttpRequestOption_URLCodePage = 2;
WinHttpRequestOption_EscapePercentInURL = 3;
WinHttpRequestOption_SslErrorIgnoreFlags = 4;
WinHttpRequestOption_SelectCertificate = 5 '13056 = エラー フラグを無視します。
WinHttpRequestOption_EnableRedirects = 6; ' True の場合、要求されたページにジャンプがある場合、False の場合はジャンプ ページの情報を取得しません。
WinHttpRequestOption_UrlEscapeDisable = 7;
WinHttpRequestOption_UrlEscapeDisableQuery = 8;
WinHttpRequestOption_SecureProtocols = 9;
WinHttpRequestOption_EnableTracing = 10;
WinHttpRequestOption_RevertImpersonationOverSsl = 11;
WinHttpRequestOption_EnableHttpsToHttpRedirects = 12;
WinHttpRequestOption_EnablePassportAuthentication = 13;
WinHttpRequestOption_MaxAutomaticRedirects = 14;
WinHttpRequestOption_MaxResponseHeaderSize = 15;
WinHttpRequestOption_MaxResponseDrainSize = 16;
WinHttpRequestOption_EnableHttp1_1 = 17;
WinHttpRequestOption_EnableCertificateRevocationCheck = 18;
メソッドの説明
「中止」は、WinHTTP 送信メソッドを中止します。
GetAllResponseHeaders は、すべての HTTP 応答ヘッダーを取得します。
GetResponseHeader は HTTP 応答ヘッダーを取得します。
開く HTTP リソースへの HTTP 接続を開きます。
Send は、HTTP リクエストを HTTP サーバーに送信します。
SetAutoLogonPolicy は、現在の自動ログイン ポリシーを設定します。
SetClientCertificate ハイパーテキスト転送プロトコル セキュア (HTTPS) サーバーに送信するクライアント証明書を選択します。
SetCredentials HTTP サーバー (オリジン サーバーまたはプロキシ サーバー) で使用される資格情報を設定します。
SetProxy はプロキシ サーバー情報を設定します。
SetRequestHeader HTTP リクエスト ヘッダーを追加、変更、または削除します。
SetTimeouts は、コンポーネントの送受信操作の個別の経過時間をミリ秒単位で指定します。
WaitForResponse 非同期転送メソッドが値 SetTimeouts を完了するまでの待ち時間を秒単位で指定します。
WinHttpRequest オブジェクトは次のプロパティを定義します。
プロパティ アクセス タイプの説明
オプション 読み取り/書き込みで、WinHTTP オプション値を設定または取得します。
ResponseBody 読み取り専用 応答エンティティの本文を符号なしのバイト配列として取得します。
ResponseStream 読み取り専用 IStream を応答エンティティとして取得します。
ResponseText 応答エンティティ本文から取得したテキストとして読み取り専用。
ステータス 読み取り専用で、最後に応答が取得されたときの HTTP ステータス コード。
StatusText は読み取り専用で HTTP ステータスのテキストを取得します。
イベント
WinHttpRequest オブジェクトは次のイベントを定義します。
次のイベントは WinHttpRequest オブジェクトによって定義されます。
イベント イベントの説明
OnError アプリケーションに実行時エラーが発生した場合に発生します。
アプリケーションの実行時エラーが発生したときに発生します。
OnResponseDataAvailable 応答からデータが利用可能な場合に発生します。
応答データが利用可能な場合に発生します。
OnResponseFinished 応答データが完了したときに発生します。
応答データが完了したときに発生します。
OnResponseStart 応答データの受信が開始されるときに発生します。
レスポンスデータの受信開始時に発生します。
備考
WinHttpRequest オブジェクトは、IErrorInfo インターフェイスを使用してエラー データを提供します。
WinHttpRequest オブジェクトは、IErrorInfo インターフェイスを使用してエラー データを提供します。
説明とエラー数値は、Microsoft Visual Basic Scripting Edition (VBScript) の Err オブジェクトを使用して取得できます。
Microsoft JScript の Error オブジェクト。
エラー番号の下位 16 ビットは、エラー メッセージにある値に対応します。
注: Windows XP および Windows 2000 については、「実行時要件」を参照してください。
注: Windows XP および Windows 2000 については、「ランタイム要件」を参照してください。
要件
サポートされる最小クライアント Windows XP、Windows 2000 Professional SP3 Windows XP
サポートされる最小サーバー Windows Server 2003、Windows 2000 Server SP3
Windows XP および Windows 2000 上の WinHTTP 5.0 および Internet Explorer 5.01 以降用に再配布可能です。
Windows XP および Windows 2000 の場合、WinHTTP 5.0 および Internet Explorer 5.01 以降。
IDL HttpRequest.idl HttpRequest.idl
ライブラリ Winhttp.lib Winhttp.lib
DLL Winhttp.dll Winhttp.dll