
VB中Inet控件获取源码不完整,如何处理。
页面三个控件:Text1,Text2,Inet1PrivateSubCommand1_Click()Text2.Text=Inet1.OpenURL(Text1.Text...
页面三个控件:Text1,Text2,Inet1
Private Sub Command1_Click()
Text2.Text = Inet1.OpenURL(Text1.Text)
End Sub
Text2已设为多行文本和上下拉条。
问题:
显示的HTML不全,特别不是GBK的页面只能得到一小半。
比如:http://baidu.hexun.com/stock/h.php?code=600488.sh&t=d
这个页只能显示到“百度一下”的按钮的代码,后面就没有了。
请问,这该怎么办?
ljl88900和秋色烽火的方法还是不行,不能完整获取。 展开
Private Sub Command1_Click()
Text2.Text = Inet1.OpenURL(Text1.Text)
End Sub
Text2已设为多行文本和上下拉条。
问题:
显示的HTML不全,特别不是GBK的页面只能得到一小半。
比如:http://baidu.hexun.com/stock/h.php?code=600488.sh&t=d
这个页只能显示到“百度一下”的按钮的代码,后面就没有了。
请问,这该怎么办?
ljl88900和秋色烽火的方法还是不行,不能完整获取。 展开
3个回答
展开全部
直接给个函数你 控件也不用了
'============================
'XmlHttp函数
'msgbox getBody("http://www.baidu.com",["GB2312"|"BIG5"|...])
'============================
Public Function GetBody(ByVal URL$, Optional ByVal Coding$ = "GB2312")
Dim ObjXML
On Error Resume Next
Set ObjXML = CreateObject("Microsoft.XMLHTTP")
With ObjXML
.Open "Get", URL, False, "", ""
.setRequestHeader "If-Modified-Since", "0"
.SEnd
GetBody = .ResponseBody
End With
GetBody = BytesToBstr(GetBody, Coding)
Set ObjXML = Nothing
End Function
Public Function BytesToBstr(strBody, CodeBase)
Dim ObjStream
Set ObjStream = CreateObject("Adodb.Stream")
With ObjStream
.Type = 1
.Mode = 3
.Open
.Write strBody
.Position = 0
.Type = 2
.Charset = CodeBase
BytesToBstr = .ReadText
.Close
End With
Set ObjStream = Nothing
End Function
不清楚你写的什么代码,msgbox 是有字数限制的,我用 Debug.Print全显示出来了
Debug.Print GetBody("http://baidu.hexun.com/stock/h.php?code=600488.sh&t=d ")
'============================
'XmlHttp函数
'msgbox getBody("http://www.baidu.com",["GB2312"|"BIG5"|...])
'============================
Public Function GetBody(ByVal URL$, Optional ByVal Coding$ = "GB2312")
Dim ObjXML
On Error Resume Next
Set ObjXML = CreateObject("Microsoft.XMLHTTP")
With ObjXML
.Open "Get", URL, False, "", ""
.setRequestHeader "If-Modified-Since", "0"
.SEnd
GetBody = .ResponseBody
End With
GetBody = BytesToBstr(GetBody, Coding)
Set ObjXML = Nothing
End Function
Public Function BytesToBstr(strBody, CodeBase)
Dim ObjStream
Set ObjStream = CreateObject("Adodb.Stream")
With ObjStream
.Type = 1
.Mode = 3
.Open
.Write strBody
.Position = 0
.Type = 2
.Charset = CodeBase
BytesToBstr = .ReadText
.Close
End With
Set ObjStream = Nothing
End Function
不清楚你写的什么代码,msgbox 是有字数限制的,我用 Debug.Print全显示出来了
Debug.Print GetBody("http://baidu.hexun.com/stock/h.php?code=600488.sh&t=d ")
展开全部
出错的原因是你对Inet1控件的使用不正确。
下面是修改后的代码,能完整下载网页代码:
Private Sub Command1_Click()
Dim b() As Byte
Inet1.Cancel
Inet1.Protocol = icHTTP
Inet1.URL = ""
Inet1.URL = Text1.Text
b() = Inet1.OpenURL(, icByteArray)
Text2.Text = StrConv(b, vbUnicode)
End Sub
下面是修改后的代码,能完整下载网页代码:
Private Sub Command1_Click()
Dim b() As Byte
Inet1.Cancel
Inet1.Protocol = icHTTP
Inet1.URL = ""
Inet1.URL = Text1.Text
b() = Inet1.OpenURL(, icByteArray)
Text2.Text = StrConv(b, vbUnicode)
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个东东是控件的bug 推荐用webbrowser来回去源码 或者是用winsock
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询