YUKAI / bocco-api-docs

http://api-docs.bocco.me/
0 stars 0 forks source link

チャットルーム取得 レスポンスbody に json 以外のデータが出力されている #27

Closed tfuru closed 7 years ago

tfuru commented 7 years ago

レスポンス ボディのJSONの 初めと終わりに 不要データが含まれている。

例) /alpha/rooms/joined?access_token=xxxxxx

Server: Cowboy
Connection: close
Content-Type: application/json; charset=utf-8
Vary: Accept-Encoding
Date: Sun, 06 Nov 2016 04:57:43 GMT
Transfer-Encoding: chunked
Via: 1.1 vegur

1361
[{"uuid":"f5020da2.......fffff"}]}]
0
harajune commented 7 years ago

再現を試みたのですが、うまく再現しませんでした。詳細について伺いたいのですが、access_tokenなどの秘密情報を含むことになると思うので個別に連絡します。

tfuru commented 7 years ago

GET Request https://github.com/tfuru/BoccoEsp/blob/master/bocco_api.cpp#L32 GET時のヘッダーはココを見てもらえると参考になると思います。 "Connection: close" の部分を変えると動きがかわったりもしたのでこのヘッダー関連かもしれません。

tfuru commented 7 years ago

この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....
harajune commented 7 years ago

拝見しました。個別にも返信しましたが、これはchunked encodingの仕様です。 https://tools.ietf.org/html/rfc2616#page-25

BOCCO APIのレスポンスは基本的にchunked encodingがされており、レスポンスヘッダーにTransfer-Encoding: chunkedを付与して返却するようになっています。コードを拝見すると、chunked encodingに対応しない実装になっているようなのでこれが原因で不具合が起きているものと思います。

kiryuxxu commented 7 years ago

ESP8266 の mater に chunked encoding サポートがマージされているのでライブラリのバージョンアップで直るかもしれませんね。 https://github.com/esp8266/Arduino/pull/2199/files

tfuru commented 7 years ago

Transfer-Encoding: chunked これへの対応ですね。 対応 と ESP8266での実装情報 ありがとうございます!