1

有人能告诉我为什么我没有得到回复吗?

<%
    RssURL = "https://api.twitter.com/1/statuses/user_timeline.rss?screen_name=nrcGOV"

    Set xmlHttp = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
    xmlHttp.setProxy 2, "www.proxy.mydomain.com:80"
    xmlHttp.Open "Get", RssURL, false
    xmlHttp.Send()
    myXML = xmlHttp.ResponseText
    myXMLcode = xmlHttp.ResponseXML.xml

    response.Write(myXML)
    response.Write(myXMLcode)
    response.Write("hey")
%>

我正在尝试从 twitter api 获取 rss feed xml 到我的服务器上,我可以在其中使用客户端代码对其进行操作。有人可以告诉我为什么我没有收到带有此代码的提要吗?

4

1 回答 1

5

成功!这是问题所在:

  1. 我拿回问号的原因是它是二进制格式的。
  2. ResponseText导致跨浏览器中的文档类型出现编码问题(我认为这就是为什么 Chrome 中没有样式而 IE 中的 URL 本身有样式的原因)
  3. 代理不是必需的。
  4. MSXML2.ServerXMLHTTP.6.0 还会导致 Atom RSS 提要出现编码错误。

我用ResponseBodyMicrosoft.XMLHTTP 代替:

url = "https://api.twitter.com/1/statuses/user_timeline.rss?screen_name=myName"
'xmlHttp.setProxy 2, "www.proxy.mydomain.com:80"

Set objHTTP = CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", url, False
objHTTP.Send
rss = BinaryToString(objHTTP.ResponseBody)
Response.Write(rss)

Function BinaryToString(byVal Binary)
    '--- Converts the binary content to text using ADODB Stream

    '--- Set the return value in case of error
    BinaryToString = ""

    '--- Creates ADODB Stream
    Dim BinaryStream
    Set BinaryStream = CreateObject("ADODB.Stream")

    '--- Specify stream type
    BinaryStream.Type = 1 '--- adTypeBinary

    '--- Open the stream And write text/string data to the object
    BinaryStream.Open
    BinaryStream.Write Binary

    '--- Change stream type to text
    BinaryStream.Position = 0
    BinaryStream.Type = 2 '--- adTypeText

    '--- Specify charset for the source text (unicode) data
    BinaryStream.CharSet = "UTF-8"

    '--- Return converted text from the object
    BinaryToString = BinaryStream.ReadText
End Function
于 2013-05-15T15:27:36.577 回答