Может кто-нибудь сказать мне, почему я не получаю ответ на MSXML2.ServerXMLHTTP.6.0 в классическом ASP?

Может кто-нибудь сказать мне, почему я не получаю ответ?

<%
    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")
%>

Я пытаюсь получить RSS-канал XML из API Twitter на моем сервере, где я могу манипулировать им с помощью кода на стороне клиента. Может кто-нибудь сказать мне, почему я не получаю канал с этим кодом?

1 ответ

Решение

Успех! Здесь была проблема:

  1. Причина, по которой я вернул знак вопроса, заключалась в том, что он был в двоичном формате.
  2. ResponseText вызывает проблему кодирования с типом документа в кросс-браузере (что, по-моему, объясняет отсутствие стилей в Chrome и наличие стилей в IE для самого URL)
  3. Прокси не был необходим.
  4. MSXML2.ServerXMLHTTP.6.0 также вызывает ошибку кодирования в каналах RSS Atom.

я использовал ResponseBody и Microsoft.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
Другие вопросы по тегам