Hereigo
@Hereigo
Пишу на C# + Asp.Net (MVC) + .Net Core

Как реализовать PHP post-запрос, чтобы принимал ответ, когда он развёрнут на том же IP, что и отвечающий сервис?

PHP post-запрос, передающий через CURL логин и пароль с формы и не принимает XML ответ от сервиса 1C, когда сервис развёрнут на том же IP. При заросе с друго IP, всё работает и на Виндовс и на Линукс…
if (strlen($_REQUEST['aName']) > 0 and strlen($_POST['aPass']) > 0) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://192.168.0.162/BlaBlaBla/authorization');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "" . $_REQUEST['aName'] . ":" . $_POST['aPass']);
$r_xml = curl_exec($curl);
$dom = new domDocument("1.0", "utf-8");
$dom->loadXML($r_xml);

echo var_dump($r_xml);  
// string(448)
// DOMDocument::loadXML() [domdocument.loadxml]: Space required after the Public Identifier in Entity
// 413 
// does not allow request data with POST requests, or the amount of data provided in the request exceeds the capacity limit
  • Вопрос задан
  • 2850 просмотров
Решения вопроса 1
Hereigo
@Hereigo Автор вопроса
Пишу на C# + Asp.Net (MVC) + .Net Core
Почитав почти с 10-ток форумов, было принято решение отказаться от CURL, т.к. при обращении к localhost, CURL часто ведёт себя не так как планировалось.
В итоге, реализовали через Http Request:
$url = 'http://192.168.0.162/BlaBlaBla/authorization';
$options = array(
    'http' => array(
        'header'  => "Content-Type: application/x-www-form-urlencoded\r\n",
        'header' => "Authorization: Basic AbCdEfGhIjHk13452653765==",
        'method'  => 'POST',
    ),
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($result);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы