2011-12-30 35 views
6

Tôi đang cố truy xuất nội dung của tài liệu HTTP bằng MS XMLHTTP COM. Tôi đã sao chép mã mẫu sau đây nhưng ngay cả điều này không hoạt động và không thành công với Lỗi EOLEException 'Truy cập bị từ chối' theo phương thức gửi.Lỗi XMLHTTP và "Truy cập bị từ chối"

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; 

Tôi thực sự không biết những gì tôi làm sai :(

+0

ngoài ra kiểm tra nếu 'send' thực sự cho phép rỗng tham số chuỗi thay vì canonical 'null' – OnTheFly

Trả lời

5

Google không chuyển hướng dựa trên địa điểm, và đôi khi điều đó liên quan đến việc chuyển hướng đến tên miền khác. XMLHTTP không như thế. Ngoài ra, có vẻ như XMLHTTP không cho phép truy cập đến các máy chủ từ xa khi chạy từ một kịch bản địa phương (chẳng hạn như từ VB, Delphi, vv) bên ngoài của một trình duyệt. Xem this discussion, this discussion, và this documentation.

+0

Đánh dấu là câu trả lời. Mặc dù tôi phải đổ lỗi cho các nhà phát triển của MSXML vì họ không cung cấp xử lý các trường hợp chuyển hướng miền x nên lập trình viên buộc phải phát minh ra một số cách giải quyết. Không đề cập đến thông báo lỗi không rõ ràng/không mô tả. –

+0

Nếu bạn đọc các bài báo tôi liên kết, họ nói bạn có thể sử dụng đối tượng 'ServerXMLHTTP' (http://msdn.microsoft.com/en-us/library/windows/desktop/ms762278.aspx) để thực hiện những gì bạn đang có cố gắng. Ngoài ra, hãy xem đối tượng 'XDomainRequest' (http://msdn.microsoft.com/en-us/library/dd573303.aspx). –

Các vấn đề liên quan