1

しばらくTwitter APIを使用していましたが、突然機能しなくなりました。それをさかのぼると、MSXML2.ServerXMLHTTPリクエストからの応答が ASP vbscript で読み取れないようです。

ページへの単純な GET 要求でさえ、無効な​​文字になります。ブラウザーでhttps://api.twitter.com/oauth/request_tokenを開くと、"Failed to validate oauth signature and token" という文字列が表示されます。ASP で同じものを取得しようとすると、読み取り不能なデータが返されます。

<% @LANGUAGE="VBSCRIPT" %>
<%
Set objXMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
objXMLHTTP.open "GET", "https://api.twitter.com/oauth/request_token", false
objXMLHTTP.send ""

Response.Write "<pre>"
Response.Write objXMLHTTP.responseText
Response.Write "<hr>"
Response.Write objXMLHTTP.getAllResponseHeaders()
Response.Write "</pre>"
%>

出力は次のとおりです。

?
------
Date: Thu, 06 Dec 2012 09:12:17 GMT
Status: 401 Unauthorized
X-MID: caa889032d29f5316a855dcadd748211ed4ee276
X-Frame-Options: SAMEORIGIN
Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0
Content-Type: text/html; charset=utf-8
Last-Modified: Thu, 06 Dec 2012 09:12:16 GMT
Pragma: no-cache
X-Transaction: dd71c8da0813a966
Expires: Tue, 31 Mar 1981 05:00:00 GMT
X-Runtime: 0.02056
Set-Cookie: k=10.36.75.125.1354785136971277; path=/; expires=Thu, 13-Dec-12 09:12:16 GMT; domain=.twitter.com
Set-Cookie: guest_id=v1%3A135478513698331395; domain=.twitter.com; path=/; expires=Sat, 06-Dec-2014 21:12:16 GMT
Set-Cookie: _twitter_sess=BAh7CDoPY3JlYXRlZF9hdGwrCFihfG87ASIKZmxhc2hJQzonQWN0aW9uQ29u%250AdHJvbGxlcjo6Rmxhc2g6OkZsYXNoSGFzaHsABjoKQHVzZWR7ADoHaWQiJTMx%250AMzI0YjhkNDc4YmQ4MDExMjlhNTI2NWU5OTAxNDVi--97206a42b05d8cb85fbd88ccd9ccb8aaca39ebef; domain=.twitter.com; path=/; HttpOnly
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 62
Server: tfe

? 実際にはより多くの文字を含む文字列ですが、CHR(0) が含まれているため処理できません。

が原因である可能性があると考えましたが、 (または他の形式)Content-Encoding: gzipを送信しても同じ結果が返されます。objXMLHTTP.setRequestHeader "Accept-Encoding", "none"

これを解決するために私に何ができるか知っている人はいますか?

4

1 に答える 1

2

私はこれを何時間も見ていて、尋ねた直後にオーサーを見つけました! Twitter API では、リクエストとともにユーザー エージェントを長く送信する必要があります。したがって、次のように簡単でした。

Set objXMLHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0")
objXMLHTTP.open "GET", "https://api.twitter.com/oauth/request_token", false
objXMLHTTP.SetRequestHeader "User-Agent", "something"
objXMLHTTP.send()
于 2012-12-06T09:34:39.027 に答える