Send UTF-8 request, return None for empty body.
_perform_http accepts a JSON-serializable object.