私はboost::asioを使用してFacebookに非同期httpリクエストを作成しています(主にクライアント側のトークンを、API呼び出しを行うことができるトークンと交換しています)。ほとんどの場合、問題なく動作し、ほぼ瞬時にデータを返します。
ただし、接続プロセスで3〜4秒間ハングしてから戻ることがあります(これはSSLであることに注意してください)。また、「接続が拒否されました」というエラーが表示されることもあります。これは、毎回同じデータを渡すことです(ローカルテスト用の私自身のFacebookトークン)。
私が何かを台無しにしたのか(私のコードはboostのウェブサイトの例とほとんど同じコピーです)、それともこれがFacebookのせいなのかわかりません。Facebookサーバーがタイムアウトする可能性のあるポイントへの接続でハングするのは一般的ですか?
私の接続コードは次のようになります:
m_sslSocket.set_verify_mode(boost::asio::ssl::verify_peer);
m_sslSocket.set_verify_callback(boost::asio::ssl::rfc2818_verification(a_server));
boost::asio::async_connect(m_sslSocket.lowest_layer(), a_endpointIterator, boost::bind(&BoostHttpRequest::HandleConnect, this, boost::asio::placeholders::error));
ほとんどの場合機能し、接続にハングアップしていることを考えると、これはFacebookの問題であり、コードの問題ではないと思います。Facebook API呼び出しを行う作業をしている人は誰でも、2セントで投げることができますか?