If you’re sending json, your code should look something like this:
$response = wp_remote_post($url, array(
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
'body' => $json,
'method' => 'POST'
));
if ( is_wp_error( $response ) ) {
die($response->get_error_message());