1

XMLHTTP-Request を使用して Web サイトからデータを取得し、VBS でそれらを操作しています。これは、デフォルトのインターネット接続でうまく機能します。しかし、現在、「プロキシ」接続を使用している顧客に対処する必要があります。

残念ながら、私はさまざまなプロキシ ソリューションにあまり詳しくありません。動作は次のとおりです。ブラウザーを開いていると、認証ダイアログ (ユーザー名/パスワード) が表示されます。ユーザー名/パスワードを入力すると、すべての Web サイトにアクセスできます。ブラウザを閉じて再起動すると、自動化ダイアログが再び表示されます。

ここで少しコードを示します。「より優れたメモ帳」で作業しているため、他のオブジェクト プロパティが表示されません。

Set XMLHTTP = CreateObject("Microsoft.XMLHTTP")
XMLHTTP.Open "GET", "http://www.mywebsite.de/getData.php" ,0
XMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
XMLHTTP.Send("content=1")

MsgBox(XMLHTTP.responseText)

強制プロキシを使用しているマシンでこのコードを実行すると、すぐに「アクセスが拒否されました」というエラーが表示されます。

ここにプロキシ認証サポートを追加するにはどうすればよいですか? もし本当にそんなことが可能なら…

ありがとうございました!

4

1 に答える 1

4

私は解決策を見つけました: はMicrosoft.XMLHTTPプロキシ構成をサポートしていないため、クラスを変更する必要があります:

set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.4.0")
xmlhttp.Open "POST","http://www.yourwebsite.com",false
xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xmlhttp.setProxy 2, "192.168.0.222:8080"
xmlhttp.setProxyCredentials "your_username" , "password_for_username"
xmlhttp.send

MsgBox(xmlhttp.responseText)

いくつかの重要な詳細に注意してください。

set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP.4.0")

setProxy および setProxyCredentials メソッドにはバージョン番号が必要です: パラメータの末尾にバージョン番号を使用することが重要です。バージョン番号を使用しない場合、setProyx および setProxyCredentials メソッドのない古いバージョンのクラスが検索されます。エラー メッセージが表示されます (「オブジェクトにメソッドがありません ...」)。

バージョン番号は簡単ではありません: しかし、バージョン番号自体も同様に簡単ではありません。私のローカル環境 (W7x64) では、バージョン番号 "4.0" を使用する必要がありますが、クライアントのサーバーでは機能しません ("オブジェクトを作成できませんでした ...")。バージョン番号「6.0」を使用する必要があります。インストールされているバージョンがわからない場合は、レジストリで「MSXML2.ServerXMLHTTP」を検索して調べることができます。私の場合、正しいバージョン番号を持つさまざまなキーがあります。

ここに画像の説明を入力

于 2013-09-26T07:26:49.757 に答える