获取网页代码出错,请高手指教
vb2010吧
全部回复
仅看楼主
level 1
mysisaneryi 楼主
本人刚学VB2010,在使用下面这一段VB2010中获取网页title头的函数,在实际使用中,当所请求的网址可以正常打开时,就能正确得到TITLE头,但是当网站打不开时,函数就会出错,出错的地方是“ httpResp = CType(httpReq.GetResponse(), Net.HttpWebResponse)”,请问如何容错?(以http://www.baidu.comhttp://www.baidu.net为例,baidu.net就会出错)
Function posthtml(ByVal _URL As String) As String
Dim TitelStart, TitelEnd As Short
Dim TitelTxt As String
Dim url As String = _URL ' 网页地址
Dim httpReq As System.Net.HttpWebRequest
Dim httpResp As System.Net.HttpWebResponse
Dim httpURL As New System.Uri(url)
httpReq = CType(Net.HttpWebRequest.Create(httpURL), Net.HttpWebRequest)
httpReq.Method = "GET"
httpResp = CType(httpReq.GetResponse(), Net.HttpWebResponse)
Dim reader As IO.StreamReader = New IO.StreamReader(httpResp.GetResponseStream)
Dim respHTML As String = reader.ReadToEnd() 'respHTML就是网页源代码
TitelStart = respHTML.IndexOf("<title>") + 7
TitelEnd = respHTML.IndexOf("</title>")
TitelTxt = respHTML.Substring(TitelStart, TitelEnd - TitelStart)
Return TitelTxt
End Function
2014年02月04日 07点02分 1
level 1
mysisaneryi 楼主
:又变成这一句出错了“httpReq = CType(Net.HttpWebRequest.Create(URL), Net.HttpWebRequest)”,提示“无效的 URI: 未能分析主机名。”,网址是绝对没有问题。调试的时候还有一个很奇怪的现象,我在一个过程里一次调用四回此函数,网址的前缀都一样(baidu.com/baidu.net/baidu.cn/baidu.com.cn)都能正常返回结果,再次用其它前缀的网址调用时,就出错了。
2014年02月10日 14点02分 3
每个网址前加http://
2014年02月10日 15点02分
level 1
mysisaneryi 楼主
回复 百百mp3 :是标准的“http:// www。xxx。com”格式,我调试时发现如果参数直接用字符串“http:// www。xxx。com”,第二次调用是正常的,但如果是用变量,str=http。// www。+字符串变量+".com",然后再把str当参数,第一次正常,第二次出错,调试时我输出str的网址是
正确的
。还请高手多多指教
2014年02月10日 16点02分 6
1