Я пытаюсь отправить данные POST:PHP локон размещать не отсылают данные
$url ="https://server:510/1/auth/";
$data = array(
"USERNAME" => "user",
"PASSWORD" => "password"
);
$str_data = json_encode($data);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array('Content-Type:application/json',
'Content-Length: ' . strlen($str_data))
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $str_data);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch,CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1);
curl_setopt($ch,CURLOPT_POSTREDIR,3);
$response = curl_exec($ch);
print_r($response);
и ответ сервера (результат многословен): «вы не послали каких-либо полномочий»
> POST /1/auth/ HTTP/1.1
Host: server:port
Accept: */*
Content-Length: 39
Content-Type: application/x-www-form-urlencoded
< HTTP/1.1 200 OK
< Date: Mon, 06 Jul 2015 18:53:52 GMT
< Server: Apache/2.4.10 (Win32) OpenSSL/1.0.1i mod_wsgi/3.5 Python/2.7.8
< Content-Length: 73
< Content-Type: application/json
<
похоже я не отправляю сообщение данные. что мне не хватает?
я заметил, что в хром отладчик под сети, запрос отправляется как GET ....
ниже документация от сервера поставщика:
Например, предположим, что ваш сервер размещен на 10.211.55.3. Чтобы запросить маркер сеанса введите свое имя пользователя и пароль в качестве POSTING переменных в следующем URL (обратите внимание на использование в/1 /, что номер версии API):
https://10.211.55.3/1/auth
USERNAME = '[email protected]'
PASSWORD = 'Tester01'
Вот это :(
Вы не можете видеть в браузере (будь то Chrome или любой другой), что происходит в коде, который выполняется на сервере. – axiac
уверен, но я могу видеть, что метод был «GET» и не "POST". True? – bart2puck
Вы можете увидеть в браузере обозреватель обо всех браузерах h сервер. Предположим, вы запустили на сервере код PHP, который вы опубликовали. Код использует 'curl' для подключения к другому серверу и отправки HTTP-запроса на него. Браузер никоим образом не участвует в этом втором соединении и понятия не имеет об этом. Он не видит, как ваш код подключается к другому серверу. Все, что он может видеть, это вывод вашего скрипта. И этот вывод отображает (из-за 'CURLOPT_VERBOSE'), что запрос на второй сервер был выполнен с использованием' POST'. Проблема, вероятно, в типе контента, а не в методе. – axiac