Closed tfuru closed 7 years ago
再現を試みたのですが、うまく再現しませんでした。詳細について伺いたいのですが、access_tokenなどの秘密情報を含むことになると思うので個別に連絡します。
GET Request https://github.com/tfuru/BoccoEsp/blob/master/bocco_api.cpp#L32 GET時のヘッダーはココを見てもらえると参考になると思います。 "Connection: close" の部分を変えると動きがかわったりもしたのでこのヘッダー関連かもしれません。
このcURLコマンドに trace オプションつけてバイナリログ出力すると 確認できるようです。
curl --trace trace.log -i "https://api.bocco.me/alpha/rooms/joined?access_token=xxxx"
0000: 31 34 34 34 0d 0a 5b 7b 22 75 75 69 64 22 3a 22 1444..[{"uuid":"
0010: 66 35 30 32 30 64 61 32 2d 66 32 65 63 2d 34 64 f5020da2-f2ec-4d
0020: 31 31 2d 61 31 66 39 2d 37 61 32 31 34 36 33 61 11-a1f9-7a21463a
0030: 38 38 62 61 22 2c 22 6e 61 6d 65 22 3a 22 e3 82 88ba","name":"..
....
04e0: 2c 22 61 64 64 72 65 73 73 22 3a 22 66 66 66 66 ,"address":"ffff
04f0: 66 66 22 7d 5d 7d 5d 0d 0a 30 0d 0a 0d 0a ff"}]}]..0....
拝見しました。個別にも返信しましたが、これはchunked encodingの仕様です。 https://tools.ietf.org/html/rfc2616#page-25
BOCCO APIのレスポンスは基本的にchunked encodingがされており、レスポンスヘッダーにTransfer-Encoding: chunked
を付与して返却するようになっています。コードを拝見すると、chunked encodingに対応しない実装になっているようなのでこれが原因で不具合が起きているものと思います。
ESP8266 の mater に chunked encoding サポートがマージされているのでライブラリのバージョンアップで直るかもしれませんね。 https://github.com/esp8266/Arduino/pull/2199/files
Transfer-Encoding: chunked これへの対応ですね。 対応 と ESP8266での実装情報 ありがとうございます!
レスポンス ボディのJSONの 初めと終わりに 不要データが含まれている。
例) /alpha/rooms/joined?access_token=xxxxxx