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 フィード xml を取得しようとしています。このコードでフィードを取得できない理由を誰か教えてもらえますか?

4

1 に答える 1

5

成功!ここに問題がありました:

  1. クエスチョン マークが返ってきたのは、バイナリ形式だったからです。
  2. ResponseTextクロスブラウザのdoctypeでエンコーディングの問題を引き起こします(これが、Chromeにスタイルがなく、URL自体にIEのスタイルがある理由だと思います)
  3. プロキシは必要ありませんでした。
  4. MSXML2.ServerXMLHTTP.6.0 は、Atom RSS フィードでもエンコード エラーを引き起こします。

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
于 2013-05-15T15:27:36.577 に答える