2013-12-12 14 views
8

Tôi đã cố gắng để làm LINK FINDER và phải đối mặt với 2 vấn đềAsynchronous HttpRequest sử dụng WinHttp.WinHttpRequest.5.1 trong ASP

Issue 1 (Resolved) :: Không thể để có được url của trang chuyển hướng

Điều này đã được giải quyết bằng cách sử dụng REFERNCE LINKWinHttp.WinHttpRequest.5.1

Số 2 (chưa được giải quyết) :: không thể sử dụng WinHttp.WinHttpRequ est.5.1 đối tượng SỰ KIỆN Hoặc không gọi lại để yêu cầu không đồng bộ

đang yêu cầu đồng bộ

Set req = CreateObject("WinHttp.WinHttpRequest.5.1") 
req.open "GET", url, FALSE 
req.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
req.send PostData 

này đang làm việc tốt nhưng nếu tôi có yêu cầu multuple, sau đó lấy nó để nhiều thời gian.

Tôi đã thử sau Asynchronous đang yêu cầu nhưng nhận được lỗi

Set req = CreateObject("WinHttp.WinHttpRequest.5.1") 
req.open "GET", url, TRUE 
req.OnReadyStateChange = GetRef("req_OnReadyStateChange") 
req.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
req.send PostData 

Function req_OnReadyStateChange 
    ' do something 
End Function 

Mã 1

Set req = CreateObject("WinHttp.WinHttpRequest.5.1","req_") 
req.open "GET", url, TRUE 
Function req__OnResponseFinished 
    ' do something 
End Function 
req.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
req.send PostData 

LỖI - Các máy chủ từ xa không tồn tại hoặc không có sẵn : 'CreateObject'

Mã 2

Set req = CreateObject("WinHttp.WinHttpRequest.5.1") 
req.open "GET", url, TRUE 
req.OnResponseFinished = GetRef("req_OnResponseFinished") 
Function req_OnResponseFinished 
    ' do something 
End Function 
req.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
req.send PostData 

LỖI: Đối tượng không hỗ trợ tài sản hoặc phương pháp: 'req.OnResponseFinished

Mã 3

Set req = CreateObject("WinHttp.WinHttpRequest.5.1") 
req.open "GET", url, TRUE 
req.OnReadyStateChange = GetRef("req_OnReadyStateChange") 
req.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
req.send PostData 
Function req_OnReadyStateChange 
    ' do something 
End Function 

Trong tài liệu microsoft, họ đã gọi WinHttp.WinHttpRequest.5.1 có 4 sự kiện.

  1. onerror
  2. OnResponseDataAvailable
  3. OnResponseFinished
  4. OnResponseStart

Nhưng tôi đã không có ví dụ về cách sử dụng sự kiện này, cũng không phải tôi có thể sử dụng các sự kiện trong ASP.

Hy vọng phản hồi nhanh ...

Trả lời

2

bạn đã thử sử dụng Sub thay vì một hàm cho "req_OnReadyStateChange" chưa?

bằng cách tôi đang sử dụng đối tượng MSXML2.ServerXMLHTTP và điều này đang hoạt động tốt. có lý do nào khiến bạn sử dụng API WinHttp này không?

ví dụ với MSXML2.ServerXMLHTTP:

<% 
dim url : url = "http://localhost" 
dim XmlHttp : set XmlHttp = server.createobject("MSXML2.ServerXMLHTTP") 
XmlHttp.onreadystatechange = getRef("doHttpReadyStateChange") 
XmlHttp.open "GET", url, true 
XmlHttp.send() 

sub doHttpReadyStateChange 
    response.write XmlHttp.readyState 
    response.write "<br>" 

    select case XmlHttp.readyState 
     case 0 'UNINITIALIZED 

     case 1 'LOADING 

     case 2 'LOADED 

     case 3 'INTERACTIVE 

     case 4 'COMPLETED 
      response.write "Done" 
    end select 
end sub 
%> 
+0

Có, tôi cần URL cuối cùng sau khi thats chuyển hướng do tại sao tôi đang sử dụng WinHttp.WinHttpRequest.5.1. để biết thêm thông tin, bạn có thể kiểm tra http://stackoverflow.com/questions/20358654/serverxmlhttp-request-returing-data-but-not-returning-url-of-final-page-after-30 –

+0

@Dr_Dang ok và bạn đã thử sử dụng một Sub thay vì một chức năng cho sự kiện OnReadyStateChange? – ulluoink

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