【问题标题】:MSXML2.ServerXMLHTTP using Classic ASP returns broken images使用经典 ASP 的 MSXML2.ServerXMLHTTP 返回损坏的图像
【发布时间】:2016-06-08 15:25:57
【问题描述】:

多年来我没有使用过 MSXML2.ServerXMLHTTP,现在我需要使用它。当我使用 MSXML2.ServerXMLHTTP 抓取页面时,该页面返回带有损坏的图像。我记得过去这样做过,我会使用一行代码,图像会完美解析。这有点像设置基本网址。有谁知道代码是什么?这是我正在使用的代码:

url = "notimportant.com"

Set objXML = Server.CreateObject("MSXML2.ServerXMLHTTP")
    objXML.Open "GET", URL, False
    objXML.Send()
    xmlResponse = objXML.responseText
Set objXML = Nothing

【问题讨论】:

  • 你是如何获得图像的。如果xmlResponse 包含img 标签,那么您需要查看源代码并找出它们可能有什么问题。注意我建议使用Server.CreateObject("MSXML2.ServerXMLHTTP.6.0") - 它调用最新版本的 MSXML

标签: asp-classic msxml serverxmlhttp


【解决方案1】:

您可能希望在<head> 内放置一个<base> 标记,这样一行代码必须如下:

xmlResponse = Replace(objXML.responseText, "<head>", "<head><base href=""http://notimportant.com/"" />", 1, 1, vbTextCompare)

或者在head标签比较复杂和不可预测的情况下,比如&lt;head class="head etc"&gt;,作为一种更可靠的方式,可以使用正则表达式来替换:

Dim Re
Set Re = New RegExp
    Re.IgnoreCase = True
    Re.Pattern = "<head[^>]*>"

xmlResponse = Re.Replace(objXML.responseText, "$&<base href=""http://notimportant.com/"" />")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多