2013-12-12 27 views
8

starałem się uczynić LINK FINDER i stoi 2 problemAsynchronous HttpRequest użyciu WinHttp.WinHttpRequest.5.1 w ASP

Issue 1 (Rozwiązane) :: Nie można pobrać url Przekierowanie

Ten problem został rozwiązany REFERNCE LINK za pomocą WinHttp.WinHttpRequest.5.1

Issue 2 (nierozwiązany) :: stanie korzystać WinHttp.WinHttpRequ est.5.1 sprzeciw IMPREZY lub Nie oddzwanianie do asynchronicznego żądania

kod synchroniczne żądania

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

To działa dobrze, ale jeśli mam multuple wniosek, wówczas jej podejmowanie dużo czasu.

Próbowałem następujących asynchronicznego kodu żądanie ale dostać błędu

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 

Kod 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 

ERROR - Serwer zdalny nie istnieje lub jest niedostępny : "CreateObject"

Kodeks 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 

BŁĄD: obiekt nie obsługuje tej właściwości lub metodę: „req.OnResponseFinished

kod 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 

W dokumentacji microsoft odsyłają one WinHttp.WinHttpRequest.5.1 mają 4 zdarzenia.

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

ale ja nie mam przykład jak użyć tego zdarzenia, nie jestem w stanie wykorzystać te wydarzenia w ŻMIJA.

Nadzieję na szybką odpowiedź ...

Odpowiedz

2

Czy próbowałeś użyć Sub zamiast funkcji dla "req_OnReadyStateChange"?

przy okazji korzystam z obiektu MSXML2.ServerXMLHTTP, a to działa poprawnie. czy jest jakiś powód, dla którego używasz tego API WinHttp?

przykład z 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

Tak, muszę końcowy URL przekierowania po ów dlaczego używam WinHttp.WinHttpRequest.5.1. , aby uzyskać więcej informacji, sprawdź http://stackoverflow.com/questions/20358654/serverxmlhttp-request-returing-data-but-not-returning-url-of-final-page-after-30 –

+0

@Dr_Dang ok i czy próbowałeś użyć Suba zamiast funkcji dla zdarzenia OnReadyStateChange? – ulluoink