我无法找到一种方法来使用经典中的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,管理员不想进行注册表修复。我也是一个非常初级的程序员,所以这可能不起作用,我不知道。
提前感谢您提供任何帮助。
答案 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,并且没有资源来重写它,那么这行得通...