【问题标题】:MSXML2.ServerXMLHTTP - can't access websiteMSXML2.ServerXMLHTTP - 无法访问网站
【发布时间】:2015-08-01 12:57:32
【问题描述】:

例如,kat.cr 是少数几个我无法访问的网站之一。 在响应中,我得到 2 个符号而不是实际网页:

这是我正在使用的 VBA 代码:

url = "https://kat.cr"
Set xmlHTTP = CreateObject("MSXML2.serverXMLHTTP")
xmlHTTP.Open "GET", url, False
xmlHTTP.setRequestHeader "Accept-Language", "en-US,en;q=0.8"
xmlHTTP.setRequestHeader "Content-Type", "text/xml"
xmlHTTP.Send

Set html = CreateObject("htmlfile")
response = xmlHTTP.responseText

网站实际上是拒绝我访问还是我做错了什么?

【问题讨论】:

  • 请修正您的标签,它是一个或另一个(vb.netvba)...
  • 你想要的只是网页正确吗?
  • 正确,我只需要网页的html文本。
  • 436f6465786572 - 已修复,感谢提醒!
  • 使用CreateObject("MSXML2.XMLHTTP")

标签: vba xmlhttprequest


【解决方案1】:

CreateObject("MSXML.XMLHTTP") 用于客户端应用程序。 ServerXMLHttp 用于服务器应用程序。有关两者的更多信息,请参阅this article

Set xmlHTTP = CreateObject("MSXML2.XMLHTTP")
xmlHTTP.Open "GET", "https://kat.cr", False
xmlHTTP.Send
Debug.Print xmlHTTP.responseText

【讨论】:

  • 完美运行。我现在明白为什么我无法访问了。谢谢。
【解决方案2】:

该网站并没有拒绝您访问,恐怕是您的代码。下面是一个快速示例,可从您访问的页面获取所需的HTML

注意:这只是一个快速的 type-o,但可以帮助您找到正确的方向。

Dim ie As InternetExplorer
Dim html As HTMLDocument

Set ie = New InternetExplorer
ie.Visible = False
ie.navigate "https://kat.cr"

Set html = ie.document
'this is the inner html  -html.DocumentElement.innerHTML
Set ie = Nothing

编辑 - 这可能是您更好的解决方案

Set xmlHTTP = New MSXML2.XMLHTTP
xmlHTTP.Open "GET", "https://kat.cr", False
xmlHTTP.send 

Dim doc As Object
Set doc = CreateObject("htmlfile")
doc.body.innerHTML = xmlHTTP.responseText
debug.print doc.body.innerHTML

【讨论】:

  • IE 不是比 xmlhttp 请求慢吗?出于这个原因,我一直试图远离 IE。
  • 可以,但差别不大。许多事情都会导致网络差异,而不仅仅是您如何获得所需的东西......
  • 这似乎在正确的轨道上,我认为您正在使用不同版本/类型的 VB,因为使用这两种代码我都会遇到用户定义的类型错误。但我明白了你的意思,这确实让我走上了正确的道路。谢谢。
  • 欢迎,有一段时间没和vba合作了,可能有点生疏了:)
  • 你做得很好!我将不得不选择债券答案作为接受的答案,但仍然感谢您的帮助!
猜你喜欢
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 2020-01-15
  • 1970-01-01
相关资源
最近更新 更多