2012-07-09 21 views
10

Mamy folowing link: http://mvp.sos.state.ga.us/Jak korzystać z MSXML2.ServerXMLHTTP w celu pobrania danych z innej witryny?

Zamiast tworzyć db do replikowania informacji, że strona MVP, chcielibyśmy wykorzystać nasz własny formularz, a następnie za kulisami, wysyłać informacje na stronie powyżej, aby uzyskać wyniki z powrotem przy użyciu składnika o nazwie MSXML2.ServerXMLHTTP.

Niestety, nic nie wiem o tym komponencie ani o tym, jak go używać.

Czy ktoś byłby na tyle uprzejmy, aby podać mi wskazówki, w jaki sposób wykorzystać nasze własne ... do wysyłania informacji na powyższą stronę i uzyskania wyników z powrotem do naszego formularza?

Staramy się, aby użytkownicy wprowadzili pierwsze imię, nazwisko, nazwę hrabstwa, datę urodzenia.

Dzięki

Odpowiedz

22

Można użyć tego składnika dla żądań HTTP, takich jak "post", "GET", "DELETE" itp

Aby utworzyć obiekt:

<% 
    Set objXML = Server.CreateObject("MSXML2.ServerXMLHTTP") 
%> 

Aby wysłać dane metodą "GET":

<% 
    objXML.Open "GET", "http://mvp.sos.state.ga.us/?some=querystring", false 
    objXML.Send "" 
    Response.Write objXML.responseText 
%> 

Należy zauważyć, że metoda Open ma 3 parametry: Metoda HTTP, URL, wywołanie asynchroniczne.

Należy zauważyć, że metoda wysyłania w "GET" ignoruje jego parametr. (W tym przypadku mamy do przekazywania parametrów za pośrednictwem adresu URL.)

Aby wysłać dane przy użyciu metody „POST”:

<% 
    objXML.Open "POST", "http://mvp.sos.state.ga.us/", false 
    objXML.Send "username=htbasaran&password=somepassword" 
    Response.Write objXML.responseText 
%> 

Uwaga dla „post”, które wysyłają sposób przechodzi parametrów w par klucz-wartość Format jak: key1 = wartość1 & klucz2 = = value2 & tak dalej ... lub wszelkie inne dane, takie jak XML, JSON, itp)

są to podstawy tego składnika. Jeśli potrzebujesz więcej informacji, możesz sprawdzić microsoft's docs page na zewnątrz.

Przykładowy kod do pobierania wartości formularzy i wysyłania ich za pomocą metody postu xmlhttp.

<% 
    ' getting form values 
    my_uname = Request.Form("username") 
    my_pword = Request.Form("password") 

    ' creating object 
    Set objXML = Server.CreateObject("MSXML2.ServerXMLHTTP") 

    ' sending variables to an external site 
    objXML.Open "POST", "http://www.sitename.com/login.asp", false 
    objXML.Send "username=" & my_uname & "&password=" & my_pword 

    ' Assuming that successful login will return response "Ok" 
    ' writing the result to the client. 
    if objXML.responseText="Ok" then 
     Response.Write "Login Successful!" 
    else 
     Response.Write "Login Failed!" 
    end if 
%> 
+1

Ten kod jest uszkodzony. Parantheses nie powinny być wykonywane podczas wywoływania metod jako instrukcji. Również przykład "POST" powinien ustawić nagłówek Content-Type. – AnthonyWJones

+0

Biorąc pod uwagę, że próbuję to zrobić, aby uzyskać dane z witryny zbudowanej za pomocą asp.net, czy jest to nadal możliwe? –

+0

@AnthonyWJones w pewnym momencie masz rację, ale nie w ogóle. Pracuję ze stronami JScript Asp, więc ten kod jest prawidłowy dla JScript-a-aspa, ale VBScript. W każdym razie edytuję odpowiedź i usuwam paranthezy. – htbasaran