|
|
|
| Всем, доброго времени суток. Возник вопрос связанный с curl
Есть код:
$post_data = array (
"foo" => "bar",
"query" => "Nettuts",
"action" => "Submit"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://test2.ru/tester.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
echo $data['response'];
|
Строка curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - вроде должна отдавать ответ, а не выводить данные в браузер.
Тем не менее echo $data['response']; отдает мне первый символ ответа, а мне нужна именно переменная.
Как этого можно добиться? | |
|
|
|
|
|
|
|
для: kapitalist
(23.11.2015 в 21:52)
| | print_r($data); | |
|
|
|
|
|
|
|
для: Trianon
(23.11.2015 в 22:15)
| | Ну это понятно. А как например $data[response] вывести? | |
|
|
|
|
|
|
|
для: kapitalist
(24.11.2015 в 08:05)
| | Еще раз.
1. Что выдает print_r($data); ?
2. Откуда вы взяли, что $data[response] вообще определен? | |
|
|
|
|
|
|
|
для: Trianon
(24.11.2015 в 15:54)
| | 1.print_r ($data) -показывает массив, что вообщем-то и должно показывать
2. я вижу response в массиве, который отдает data | |
|
|
|
|
|
|
|
для: kapitalist
(24.11.2015 в 19:57)
| | вот и показали бы воспроизводимый реальный отклик.
У меня сомнения по обоим пунктам. | |
|
|
|
|
|
|
|
для: Trianon
(24.11.2015 в 21:02)
| | Ответ приходит такой {"status:"403, "response:"Попытка работы с чужими данными}
пока разложил через explode, но хочется докапаться до сути. | |
|
|
|
|
|
|
|
для: kapitalist
(25.11.2015 в 19:57)
| | Ну вот не знаю как это у вас получается.
Вот код:
<?php
$post_data = array (
"foo" => "bar",
"query" => "Nettuts",
"action" => "Submit"
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://test2.ru/tester.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
curl_close($ch);
var_dump($data);
?>
|
Вот такой ответ:
string(19448) "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ....
....
</html>
"
|
И в строке html-код кил на 20.
Специально попробовал обратиться к левому ресурсу, дабы получить один из 400х кодов.
Пожалуйста:
string(166) "<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx</center>
</body>
</html>
"
|
Ни в одном из доступных мануалов нет ни слова про то, что curl_exec может возвращать ассоциативный массив с ключами status и response
Может вам там функцию подменили ? | |
|
|
|
|
|
|
|
для: Trianon
(26.11.2015 в 12:53)
| | А если в tester.php сделать так:
<?
header('Content-type: application/json'); // На всякий случай, чтобы точно было в json
$p1 = 200;
$p2 = 1234;
exit ('{"status:"'.$p1.', "response:"'.$p2.'}');
?>
|
| |
|
|
|
|
|
|
|
для: kapitalist
(03.12.2015 в 09:51)
| | специально с нарушением синтаксиса JSON?
>
<?
header('Content-type: application/json'); // На всякий случай, чтобы точно было в json
$p1 = 200;
$p2 = 1234;
exit ('{"status:"'.$p1.', "response:"'.$p2.'}');
?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(03.12.2015 в 10:09)
| | Ну нет, конечно ))))
Но на сути вопроса это вроде не отражается?! ))) | |
|
|
|
|
|
|
|
для: kapitalist
(03.12.2015 в 10:51)
| | не понял | |
|
|
|
|
|
|
|
для: Trianon
(03.12.2015 в 13:40)
| | Писал вопрос выше: "А как например $data[response] вывести?" | |
|
|
|
|
|
|
|
для: kapitalist
(03.12.2015 в 15:31)
| | Так и я ответ выше написал.
никак. $data имеет тип string.
В вашем (исправленном) примере
string(31) "{"status":200, "response":1234}"
|
| |
|
|
|