2011-12-30 148 views
6

我試圖用MS XMLHTTP COM檢索HTTP文檔的內容。我確實複製了下面的示例代碼,但即使這樣也不起作用,並且在發送方法調用時發生EOLEException錯誤「訪問被拒絕」時失敗並返回XMLHTTP和「訪問被拒絕」錯誤

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 2011-12-30 07:55:01

回答

5

谷歌確實基於位置的重定向,有時是涉及重定向到另一個域。XMLHTTP不喜歡這一點。此外,它似乎XMLHTTP從本地腳本(如VB,德爾福等)在瀏覽器外運行時,不允許訪問到遠程服務器。見this discussionthis discussionthis documentation

+0

標記爲答案。儘管我不得不責怪MSXML的開發人員,因爲他們不提供處理x域重定向的情況,所以程序員不得不發明一些解決方法。更不用提晦澀/不具描述性的錯誤信息了。 – 2011-12-30 11:28:44

+0

如果您閱讀我鏈接到的文章,他們說您可以使用「ServerXMLHTTP」對象(http://msdn.microsoft.com/en-us/library/windows/desktop/ms762278.aspx)來完成您的工作嘗試。另請參閱'XDomainRequest'對象(http://msdn.microsoft.com/zh-cn/library/dd573303.aspx)。 – 2011-12-30 20:21:47