2011-12-30 6 views
6

「アクセスが拒否されました」。私は次のサンプルコードをコピーしましたが、これでもうまく動作せず、EOLEExceptionエラーでエラーが発生しました。メソッドを呼び出すと、 'アクセスが拒否されました。XMLHTTPと私はMS XMLHTTP COMとHTTP文書のコンテンツを取得しようとしているエラー

uses 
    MSXML, ComObj, ActiveX; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
    httpDoc: XMLHTTP; // IXMLHTTPRequest 
begin 
    httpDoc := CreateOleObject('MSXML2.XMLHTTP') as XMLHTTP; 
    try 
    httpDoc.open('GET', 'http://www.google.com/index.html', False, EmptyParam, EmptyParam); 
    httpDoc.send(''); // <-- EOLEException 'Access is denied' 
    if (httpDoc.readyState = 4) and (httpDoc.status = 200) then 
     ShowMessage(httpDoc.responseText); 
    finally 
    httpDoc := nil; 
    end; 
end; 

私は本当に私が間違っているのかわからない:(

+0

をsend'が本当に空に許可された '場合もチェック文字列パラメータの代わりに正規の 'null' – OnTheFly

答えて

5

Googleはロケーションベースのリダイレクトを行い、時には別のドメインにリダイレクトすることを伴う。XMLHTTPは、そのようにしていません。また、それはそうですブラウザの外で(例えばVB、デルファイ、などからのような)ローカル・スクリプトから実行したときXMLHTTPは、リモート・サーバへのアクセスを許可していません。this discussionthis discussion、およびthis documentationを参照してください。

+0

回答としてマークされています。私はMSXMLの開発者を非難しなければならないが、x-domainリダイレクトのケースを扱うことはできないので、プログラマーはいくつかの回避策を講じなければならない。あいまいな/わかりにくいエラーメッセージはもちろんですが。 –

+0

あなたは私がリンクの記事を読めば、彼らはあなたが何であるかを達成するために 'ServerXMLHTTP'オブジェクト(http://msdn.microsoft.com/en-us/library/windows/desktop/ms762278.aspx)を使用することができると言います試みる。また、 'XDomainRequest'オブジェクト(http://msdn.microsoft.com/en-us/library/dd573303.aspx)を見てください。 –

関連する問題