Может кто-нибудь сказать мне, почему я не получаю ответ на 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 ответ
Решение
Успех! Здесь была проблема:
- Причина, по которой я вернул знак вопроса, заключалась в том, что он был в двоичном формате.
ResponseText
вызывает проблему кодирования с типом документа в кросс-браузере (что, по-моему, объясняет отсутствие стилей в Chrome и наличие стилей в IE для самого URL)- Прокси не был необходим.
- 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