HTTP::Request#content($bytes)
もしくは HTTP::Request#add_content($bytes)
を呼んでもcontent-lengthは自動で計算されず、0になる。
なのでそのままリクエストを送ると、ちゃんとcontent-lengthだけbodyを読む実装はボディが空だとみなすのでちゃんとcontent-lengthを計算しなければいけない。
Plackの実装に慣れていたのでびっくりした。
my $req = HTTP::Request::Common::POST($url); my $json = JSON::XS::encode_json($payload); $req->content($json); $req->as_string;
HTTP::Request#as_string
した結果:
POST http://example.com/api/issuance Content-Length: 0 Content-Type: application/json {"status":"success","expires_at":"2018-04-09T12:19:26+09:00"}
Content-Length: 0
になっていることが確認できる。