はてなブックマークフィードを取得しようとするとエラーが出る件

20181114_01.png

この記事の続き

はてなブックマークの情報が取得出来なくなっていた件 | mutter




というわけで、自分のはてなブックマーク情報を取得するに当たって、はてなブックマークフィードを取得しようと思って実装しました。これまた相変わらず時代遅れの実装ですが、レポジトリ内に転がってたのを適当に持ってきて取得部分はPear「HTTP_Client」で実装しました。で、ローカルではきちんと動作することを確認出来たんですがなぜか本番環境で動かない。HTTP_Client::get() したあとの、HTTP_Client::currentResponse() がnullを返すんですよね。仕様は新しくなったはてなブックマークフィードの仕様に沿っていますし、ブラウザにURLを打ち込んでみるときちんと表示されます。なんだろう、意味がわからない。

で、調べてみると、エラーを詳しく追ってみるとどうやら、「fsockopen」でsslを開けないと怒られているみたいでした。「HTTP_Client」→「HTTP_Request」→「Net_Socket」なので、「Net_Socket」の問題かもしくはopensslの問題か(サーバ上は0.9.8系だけどローカルは1.0系)。くっそ面倒くさいな……と思ったけれど、はてなブックマークフィードのURLを「https://」ではなくて「http://」にしたらあっさり直りました。それでいいのか。将来的に「https://」に変更されたらまた動かなくなるじゃないか。

そう思いつつ、そっと閉じたのでした……まあ個人的な趣味のツールなんでね。とりあえず動いたってことで、検証はまたおいおいやります。もしくは「HTTP_Client()」なんか使うの止めたら良いんだよなあ。cURLでやった方がいいのかも。そもそもcURL使えるようにしてたっけかな。



ちなみに最近のPHPのWebリクエストは

HTTP_Clientも、その中で利用されているHTTP_Requestも古くてメンテされてなくてあんまり使うのもどうなのって感じですが、最近はどのライブラリ使ってんのって思って調べたらこうなりました。

Guzzle, PHP HTTP client — Guzzle Documentation
[PHP]超入門!! Guzzleの使い方チュートリアル – akamist blog


Guzzleかー。そういえばそういうコードを最近見掛けた気がする。インストールするのにComposerが必要なのね。今どきだと普通に入っているもんだと思うけれど、今の僕の環境だとそこからか。ちょっとだるい。いまだにsvnの環境ですからねえ。推して知るべし。gitにしたい……

ともあれ気が向いたら、Guzzle入れてみたいと思います。