在服务器端用xmlhttp用get方式获取远程页面失败

jpulh 2009-08-03 02:06:31
在服务器端用VBSCRIPT脚本写的程序,尝试获取一些页面,有些页面能成功获取且正常显示,但为什么有些页面获取不到,返回的值为空.

代码如下:

datastr="wen=268719197871"
Set Http=server.createobject("MSXML2.XMLHTTP")
Http.open "get", "http://61.152.237.204:8081/query_result.asp?"&datastr,False
Http.send
If Http.Readystate<>4 then
Set Http=Nothing
QueryOneBill="对不起,查询器出错。"&"<br><a href='/cxbox/index.asp'>返回</a>"
Set Http=Nothing
Else
page=bytesToBSTR(Http.responseBody,"gb2312")
Set Http=Nothing
response.Write(page)
End IF

谁能解决?我把分都给他!
...全文
382 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
singohuang 2009-10-15
  • 打赏
  • 举报
回复
jdfwkey=u0jzj1
后面的那个值好象是那个页面中的js中得到的,然后再用window.location跳转到带有jdfwkey=u0jzj1,具体你要抓取的那个页面写了写什么就不知道了

楼主是怎样解决的?
jpulh 2009-08-03
  • 打赏
  • 举报
回复
原来是我自己的程序有点问题,呵呵,问题已解决,过会来散分.
hookee 2009-08-03
  • 打赏
  • 举报
回复
不是直接加jdfwkey=u0jzj1,而是先要获取 jdfwkey的值再加,相当于一个ip的标识
anbs01 2009-08-03
  • 打赏
  • 举报
回复
这是获取url缓存问题,每次获取的时候url路径后面加个参数来区别每次的url不一样即可。你说获取到的页面为空是因为你之前页面没有东西所致,虽然现在更新了内容,但是服务器还是在获取以前没有内容的那个页面。
toury 2009-08-03
  • 打赏
  • 举报
回复

<%
datastr="wen=268719197871"
RemoteFileUrl="http://61.152.237.204:8081/query_result.asp?"&datastr
LocalFilePath="./jpulh.htm"
if SaveRemoteFile(LocalFilePath,RemoteFileUrl)=false then
Response.Write "下载失败"
else
Response.Write "文件保存在:"&server.MapPath(LocalFilePath)
end if
function SaveRemoteFile(LocalFilePath,RemoteFileUrl)
on error resume next

set x = Server.CreateObject("Msxml2.ServerXMLHTTP")
with x
.Open "GET", RemoteFileUrl, false, "", ""
.Send
if x.readyState=4 and x.status=200 then
dim oADS

Set oADS = Server.CreateObject("Adodb.Stream")
with oADS
.Type = 1
.Open
.Write x.ResponseBody
.SaveToFile server.MapPath(LocalFilePath),2
.Cancel(): .Close()
end with
set oADS=nothing
end if
end With
set x = Nothing
if err then SaveRemoteFile=false else SaveRemoteFile=true
end function

%>
hookee 2009-08-03
  • 打赏
  • 举报
回复
我是先得到jdfwkey, datastr中加入一次jdfwkey访问,之后去掉也可以了。但是估计jdfwkey会过期.
jpulh 2009-08-03
  • 打赏
  • 举报
回复
加jdfwkey=u0jzj1也不行,问题不在这里.

不明白为什么把页面放在http://www.chakucun.com/下就可以了?

谁能解释一下.
jpulh 2009-08-03
  • 打赏
  • 举报
回复
用这个确实可以http://www.chakucun.com/test.asp,那为什么在我的机器上测试就不行呢,太奇怪了!
hookee 2009-08-03
  • 打赏
  • 举报
回复
是不是要jdfwkey=u0jzj1一起加入?好象是访问一次后得到jdfwkey就可以了
jpulh 2009-08-03
  • 打赏
  • 举报
回复
用localhost/test.asp也不行啊,还是被重定向到http://localhost/query_result.asp?wen=268719197871&jdfwkey=ou0ff2了啊!

到底是什么原因啊?
hookee 2009-08-03
  • 打赏
  • 举报
回复
看一下 http://www.chakucun.com/test.asp?x
是不是可以?
hookee 2009-08-03
  • 打赏
  • 举报
回复
我用localhost/test.asp测可以。如果加上域名就转到query_result.asp?wen=268719197871&jdfwkey=u0jzj1
jpulh 2009-08-03
  • 打赏
  • 举报
回复
我把hookee的代码运行了一下,还是不行,搞不清楚为什么会被定向到:http://localhost/query_result.asp?wen=268719197871&jdfwkey=ou0ff2
jpulh 2009-08-03
  • 打赏
  • 举报
回复
to hookee
你的机器上测试可以吗?在我机器上不行,我发现地址被定向到http://localhost/query_result.asp?wen=268719197871&jdfwkey=ou0ff2了

to ZSZ0147
真的是跨域访问的原因?在服务器端跨域访问一般都没问题的呀.如果是跨域访问的原因,那为什么有页面可以抓取到呢?而这个页面就是不行.
hookee 2009-08-03
  • 打赏
  • 举报
回复
改用Msxml2.ServerXMLHTTP呀
jpulh 2009-08-03
  • 打赏
  • 举报
回复
错误信息如下:

错误类型:
msxml3.dll (0x800C0008)
指定资源下载失败
幸福的小雨 2009-08-03
  • 打赏
  • 举报
回复
Ajax不可以跨域访问~!
只能通过后台访问远程地址,
hookee 2009-08-03
  • 打赏
  • 举报
回复
以上测下来可以
hookee 2009-08-03
  • 打赏
  • 举报
回复

<%
datastr="wen=268719197871"
Set Http=createobject("Msxml2.ServerXMLHTTP")
Http.open "GET", "http://61.152.237.204:8081/query_result.asp?"&datastr,False
Http.send
If Http.Readystate <>4 then
QueryOneBill="对不起,查询器出错。"&" <br> <a href='/cxbox/index.asp'>返回 </a>"
Set Http=Nothing
Else
page=bytesToBSTR(Http.responseBody,"gb2312")
response.Write(page)
Set Http=Nothing
End If
%>
jpulh 2009-08-03
  • 打赏
  • 举报
回复
谢谢toury,我试了,也不行.错误信息如下:

错误类型:
msxml3.dll (0x800C0008)
指定资源下载失败。
加载更多回复(4)

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧