日進日歩で日々進捗

非情報系学生による技術の備忘録。進捗出していきたい

C++で画像をPOSTする、HTTPClientを作成する

Windows環境でC++またはCのWinsockを使って、HTTPプロトコル上で画像のPOSTを行う実装を行った際、いくつかつまずいた点をまとめたいと思います。

Content-Lengthの値

C++でバイナリの画像データをHTTPPOSTするやり方はいくつかあると思います。

複数のファイルを一回のリクエストに載せたい場合は、multipart/formdataを基本的に使うことになると思いますが、今回このContent-Lengthの設定をきちんとしていなかったために、サーバー側で400 Bad Requestとなってしまいました。

今回の場合は、きちんとHTTPリクエストのBodyの長さをきちんと載せてあげるべきでした。注意すべきは、Boundary文字列の長さも含めてカウントしてあげること。

詳しくはわかりませんが、想像するにサーバー側では、このContent-Lengthの値をみて、どこまでがBodyなのかを判断しているのでしょうか・・。