Задать вопрос
Этот вопрос закрыт для ответов, так как повторяет вопрос Как отправить HTTP запрос методом POST на URL через PHP?
@NinjaNickName
Web разработчик

Как сделать POST запрос через file_get_contents?

Почему 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"}"
}
  • Вопрос задан
  • 318 просмотров
Подписаться 1 Простой
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
context должен быть строкой, а не массивом.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽