如何使用MSXML2.ServerXMLHTTP从另一个站点获取数据?

19

我们有以下链接:http://mvp.sos.state.ga.us/

我们不想创建数据库来复制MVP页面上的信息,而是想使用我们自己的表单,在幕后使用称为MSXML2.ServerXMLHTTP组件向上述网站发送信息并获取结果。

不幸的是,我对这个组件或如何使用它一无所知。

请问是否有人能够友善地给我指点一下如何使��我们自己的表单来将信息发送到上述网站并将结果返回给我们的表单?

我们基本上正在尝试让用户输入名字的首字母,姓氏,县区和出生日期。

谢谢

1个回答

30

你可以使用这个组件来进行"POST"、"GET"、"DELETE"等类型的HTTP请求。

创建对象的方法:

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

使用 "GET" 方法发送数据:

<%
    objXML.Open "GET", "http://mvp.sos.state.ga.us/?some=querystring", false 
    objXML.Send ""
    Response.Write objXML.responseText
%>
请注意Open方法有三个参数:HTTP方法、URL、异步调用
请注意,对于“GET”请求的Send方法会忽略其参数。(在这种情况下,我们通过URL传递参数。) 要使用“POST”方法发送数据:
<%
    objXML.Open "POST", "http://mvp.sos.state.ga.us/", false 
    objXML.Send "username=htbasaran&password=somepassword"
    Response.Write objXML.responseText
%>

对于 "POST" 方法,Send 方法传递参数的格式为键值对,例如:key1=value1&key2=value2&so=on... 或者其他任何数据格式如 XML、JSON 等。

这是该组件的基础知识。如果您需要更多信息,可以查看微软文档页面

以下是一个示例代码,用于获取表单值并使用XMLHttpRequest POST方法发送它们:

<%
    ' 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
这段代码有问题。在调用方法时,不应该将括号作为语句。此外,“POST”示例应该设置Content-Type头。 - AnthonyWJones
考虑到我正在尝试从一个使用asp.net构建的网站获取数据,这仍然可能吗? - Chidi Okeh
@ChidiOkeh 是的,仍然可以,因为此组件不关心源端使用了哪种技术,它只关心源端提供的结果。 - htbasaran
它似乎对我无效。也许我使用不正确。您能否提供一个将表单字段发布到该链接并从中获取结果的示例? - Chidi Okeh
哇,谢谢你提供如此详细的答案。这节省了我不少时间!从这里,我找到了这个MSDN,其中有一些有用的示例:https://learn.microsoft.com/en-us/previous-versions/windows/desktop/ms766431(v=vs.85) - uotonyh
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接