nice object design. Just one note. You have body parameter and always convert it to json, which looks wrong for me as HttpRequest knows that he send JSON.
If we in future switch to XML, YAML or fancy new language, then we need to change it on various place. But if you pass body as ruby native structure like hash, array or anything, then you can call body.to_json in http_request and if it change in future you can change it on only one place.