vb xmlhttp无法获取网页

Fori=Val(Text9.Text)ToVal(Text8.Text)Text11.Text=iSetxmlHTTP1=CreateObject("Microsoft... For i = Val(Text9.Text) To Val(Text8.Text)

Text11.Text = i
Set xmlHTTP1 = CreateObject("Microsoft.XMLHTTP")
myurl = "http://s.taoao.com/search?spm=a230r.1.7.2.6dU7Fj&tab=all&loc=" & xx & "&fs=0&initiative_id=tbindexz_" & Replace(Left$(Now, InStr(Now, " ")), "/", "") & "&q=" & URLEncode(Text7.Text) & "&promote=0&bcoffset=2&s=" & i * 40 & "#J_relative"
xmlHTTP1.Open "Get", myurl, True
xmlHTTP1.Send

While xmlHTTP1.ReadyState <> 4
DoEvents
If MyHotKey(vbKeyF5) Then '如果按下F1地址1
MsgBox "2"
GoTo err
End If
Wend
err:
Text1.Text = xmlHTTP1.responseText

Set xmlHTTP1 = Nothing

以上是我的代码~但是在运行一段时间后会出现一直在 While xmlHTTP1.ReadyState <> 4 到 wend 的循环无法进行下一步,跳过以后会出错。在清理系统垃圾以后又会出现上述问题
展开
 我来答
网海1书生
科技发烧友

2013-11-04 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
改为同步运行就没有这些麻烦了

For i = Val(Text9.Text) To Val(Text8.Text)
Text11.Text = i
Set xmlHTTP1 = CreateObject("Microsoft.XMLHTTP")
myurl = "..."
xmlHTTP1.Open "Get", myurl, False
xmlHTTP1.Send
Text1.Text = xmlHTTP1.responseText
Set xmlHTTP1 = Nothing
更多追问追答
追问
没用啊~~虽然不会一直在那里循环,不过直接跳过去了,那样什么都没下下来了
追答
xmlHTTP1.Open "Get", myurl, False

最后那个参数是False哦,而你的代码是True,这个改了没?

False表示同步运行,就是说xmlHTTP1.Open命令执行后VB会暂停程序运行直到网站返回信息才继续执行后面的语句;
True表示异步运行,就是说xmlHTTP1.Open命令执行后VB会立即继续运行后面的语句而不等待服务器返回信息。

所以同步运行的话,并不会出现像你说的直接跳过去的,它会一直等待服务器返回信息(效果看起来就跟你用while循环等待网页返回信息一样,但它不会出现你说的死循环的情况)。当然,如果网站发生错误它也一样会返回信息的,所以你不用担心它会卡在那里死掉。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式