質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1359閲覧

Swifterでstatuses/sample.json

Mfooii

総合スコア14

Twitter

Twitterは、140文字以内の「ツイート」と呼ばれる短文を投稿できるサービスです。Twitter上のほぼ全ての機能に対応するAPIが存在し、その関連サービスが多く公開されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/03/06 06:14

Swifter というTwitterライブラリで
https://github.com/mattdonnelly/Swifter

statuses/sample.json のAPIをリクエストし、成功した場合JSONを出力するコードを書き、実行しました。
https://developer.twitter.com/en/docs/tweets/sample-realtime/api-reference/get-statuses-sample

swift

1 2let client = Swifter(consumerKey: TWITTER_CONSUMER_KEY, consumerSecret: TWITTER_CONSUMER_SECRET) 3 4client.streamRandomSampleTweets(delimited: nil, stallWarnings: nil, filterLevel: nil, language: nil, progress: { (json) in 5 print(json) 6 }, stallWarningHandler: { (a, b, c) in 7 print(a) 8 print(b) 9 print(c) 10 }) { (error) in 11 print(error) 12 }.start()

しかし、これを実行してもJSONやエラーコードが一つも出力されません。
試しに、上記のコードを5回繰り返して実行してみると、このようなエラーが5個出ました。

SwifterError(message: "HTTP Status 420: Enhance Your Calm, Response: Exceeded connection limit for user\r\n", kind: urlResponseError(status: 420, headers: [AnyHashable("Set-Cookie"): personalization_id="v1_ZFE41Qoy1d8nqAILwak/uQ=="; Max-Age=63072000; Expires=Fri, 5 Mar 2021 06:10:29 GMT; Path=/; Domain=.twitter.com, guest_id=v1%3A155185262938343961; Max-Age=63072000; Expires=Fri, 5 Mar 2021 06:10:29 GMT; Path=/; Domain=.twitter.com, AnyHashable("Strict-Transport-Security"): max-age=631138519, AnyHashable("Date"): Wed, 06 Mar 2019 06:10:29 GMT, AnyHashable("x-connection-hash"): 36d7fabac890d3c9c1f36bd6e2a0d295, AnyHashable("Content-Type"): text/html, AnyHashable("Server"): tsa_m, AnyHashable("x-response-time"): 125, AnyHashable("Content-Encoding"): gzip, AnyHashable("x-xss-protection"): 1; mode=block; report=https://twitter.com/i/xss_report], errorCode: 0)

このエラーを見る限りではAPIへのリクエストはできていると思うのですが。
正常にJSONを出力するにはどのようにすれば良いのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

HTTP Status 420: Enhance Your Calm, Response: Exceeded connection limit for user

このままの理由では?

投稿2019/03/06 06:24

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mfooii

2019/03/06 08:00

コメントありがとうございます。 HTTP Status 420: Enhance Your Calm, Response: Exceeded connection limit for user のエラーは5回連続でコードを実行した時にのみ現れます。 通常通り、一回だけコードを実行した時にはエラーコードやJSONなどは一つも出力されません。
fuzzball

2019/03/06 08:19

>>5回繰り返して実行してみると、このようなエラーが5個出ました。 ってことは1回目から出てるってことじゃないの? まぁそれはそれとして、その「1回だけ実行」したときは、コードのどこを通っているんでしょうか? (質問のコードだと値がカラのときに判別できないので、判別できるようなprintにするか、ブレークポイントを使って下さい)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問