Почему POST запрос с помощью Curl работает, а с помощью file_get_contents нет?
C Curl делаю так:
<?php
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $requestParams);
$result = curl_exec($curl);
curl_close($curl);
$response = new \RegRuAPI\Response($result);
С этим все ок, работает как нужно.
с file_get_contents делаю так:
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'header' => 'Content-Type: application/x-www-form-urlencoded' . PHP_EOL,
'content' => $requestParams,
),
));
$result = file_get_contents($url, false, $context);
Запрос идет, но переданные данные не учитываются, получаю ошибку:
object(RegRuAPI\Response)#7 (4) {
["status"]=>
string(5) "error"
["error_code"]=>
string(7) "NO_AUTH"
["error_text"]=>
string(35) "No authorization mechanism selected"
["error_params"]=>
object(stdClass)#9 (1) {
["command_name"]=>
string(13) "domain/create"
}
}
В обоих случаях массив параметров выглядит так:
array(6) {
["show_input_params"]=>
int(0)
["input_format"]=>
string(4) "json"
["output_format"]=>
string(4) "json"
["io_encoding"]=>
string(4) "utf8"
["lang"]=>
string(2) "ru"
["input_data"]=>
string(54) "{"currency":"RUR","username":"test","password":"test"}"
}