aspx页面上的经典asp页面httprequest?

时间:2017-10-11 18:37:54

标签: asp.net vbscript asp-classic

我无法找到一种方法来使用经典中的httprequest来从同时调用reqeust的aspx中提取数据。

经典代码:

    HostURL = "https://URL"
    NetURL = "middle.aspx?HostURL=" & HostUR

    Dim oXMLHTTP
    Dim strStatusTest

    Set oXMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.3.0")

    oXMLHTTP.Open "POST", NetURL, False
    oXMLHTTP.Send
    strStatusText = oXMLHTTP.responseText 

netURL aspx代码

private void Page_Load(object sender, System.EventArgs e){
    String host = getParam();
       HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(host);
        HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();

    String cc;
        using (Stream stream = response.GetResponseStream())
       {
          StreamReader reader = new StreamReader(stream, Encoding.UTF8);
          cc = reader.ReadToEnd();
       }       
    Response.Write(cc);
}

所以我试图做的是当我从经典调用aspx页面时,加载的aspx获取了一个我需要asp页面的键。

aspx代码工作正常,它确实检索了我需要的密钥。

其他信息:我们关闭了TLS 1.0,管理员不想进行注册表修复。我也是一个非常初级的程序员,所以这可能不起作用,我不知道。

提前感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:1)

您的代码存在一些问题

正如JohnRC的评论所指出的那样 - https://URL是可疑的。我假设您已将此替换为您不想在此论坛上显示的实际网址。

NetURL需要是绝对URL,即

NetURL = "http://www.yourdomain.com/middle.aspx?HostURL=" & HostURL

此外,在您提供的代码中,您已经离开了" L"在第二行的HostURL末尾,如果这是在您的实际代码中,那么显然该变量不会被传递到您的aspx页面。

最后,这不是错误,但我建议使用MSXML2.ServerXMLHTTP.6.0而不是3.0 - 它会调用最新版本的MSXML

答案 1 :(得分:0)

我没有评论为什么以及为什么不这样做……但是我有一个很好的用例。 我写了一个库,从那时起100多个Classic ASP页面(从1998年到2005年)就可以使用它。 该库处理并包装FileSystemObject。但是在较新的操作系统中,映射引起了很多问题。因此,我决定开始使用该库的ASPX版本(已在许多ASPX的:-中使用)。 因此,我通过在lib的主目录中添加“根据此请求执行此功能”代码,将ASPX库转换为POST网络服务。 然后,我重写了FSO.inc以使用ServerXMLHTTP来调用FSO.ASPX,并带有写入/读取/删除/任何文件的请求。 到目前为止,没有问题... 在ASPX中,在我的公共共享的全局类FSO下面:

<%
Select Case UCase(Current.Request("f"))
Case "READALL":     Response.write( FSO.ReadAll(Current.Request("filename")) )
Case "FILEEXISTS":  Response.write( FSO.FileExists(Current.Request("filename")) )
End select
%>

,然后进入FSO.inc:

function CallFSO(exec)
    Dim objSrvHTTP
    Set objSrvHTTP = Server.CreateObject ("MSXML2.ServerXMLHTTP")
    objSrvHTTP.SetProxy 1
    objSrvHTTP.open "POST", "http://.......your server..../FSO.aspx", False
    objSrvHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    objSrvHTTP.send exec
    IF objSrvHTTP.status = 200 Then CallFSO = objSrvHTTP.responseText
    Set objSrvHTTP = nothing
End function

FUNCTION ReadAll(Filename)
    ReadAll = CallFSO( "f=readAll&FileName=" & filename)
End function

Function FileExists(Filename)
    FileExists = instr(CallFSO( "f=FileExists&FileName=" & filename), "True") > 0
End Function

也许不是最充分的解决方案,但是如果您有大量的ASP,并且没有资源来重写它,那么这行得通...