cURL Что не так в запросах?

V
На сайте с 10.01.2012
Offline
85
5535

Есть конструкция передачи JSON POST средствами сURL. Только начал в него вникать, но не пойму что не так, в ответ получаю только FALSE.

Вот сам код, подскажите что не так...


$data = json_encode($request_data);

// инициализация cURL
$ch = curl_init('https://site.ru');
// получать заголовки
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_HEADER, 1);
// если ведется проверка HTTP User-agent, то передаем один из возможных допустимых вариантов:
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3');
// елси проверятся откуда пришел пользователь, то указываем допустимый заголовок HTTP Referer:
curl_setopt ($ch, CURLOPT_REFERER, 'https://site.ru');
// использовать метод POST
curl_setopt($ch, CURLOPT_HTTPHEADER, array (
"Accept: application/json",
"Accept-Encoding: UTF-8",
"Content-Type: application/json; charset=UTF-8"
));
curl_setopt ($ch, CURLOPT_POST, 1);
// сохранять информацию Cookie в файл, чтобы потом можно было ее использовать
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
// передаем поля формы
curl_setopt ($ch, CURLOPT_POSTFIELDS, $data);
// возвращать результат работы
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
// не проверять SSL сертификат
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
// не проверять Host SSL сертификата
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
// это необходимо, чтобы cURL не высылал заголовок на ожидание
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Expect:'));
// выполнить запрос
curl_exec ($ch);
// получить результат работы
$result = curl_multi_getcontent ($ch);
// вывожу результат
echo "result: ".$result;
curl_close ($ch);
siv1987
На сайте с 02.04.2009
Offline
427
#1
V
На сайте с 10.01.2012
Offline
85
#2

Оба эти примера прогуглил и проверил еще вчера - не проходит - возвращает FALSE

siv1987
На сайте с 02.04.2009
Offline
427
#3

Varenik, какие оба эти? Тут как минимум 4, а то 5 будут "'этих".

bums
На сайте с 03.07.2006
Offline
449
#4
Varenik:
...

// выполнить запрос
curl_exec ($ch);
// получить результат работы
$result = curl_multi_getcontent ($ch);

Посмотри что скажет

$result = curl_exec($ch);

echo curl_errno($ch);
var_dump($result);

И зачем в коде дважды?

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

И как думаешь, второй HTTPHEADER не переназначает первый?

Varenik:
...

curl_setopt($ch, CURLOPT_HTTPHEADER, array (
"Accept: application/json",
"Accept-Encoding: UTF-8",
"Content-Type: application/json; charset=UTF-8"
));
...
// это необходимо, чтобы cURL не высылал заголовок на ожидание
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Expect:'));
Недорогая регистрация и продление доменов RU/SU/РФ/COM/NET/ORG/и т.д. ( https://www.regnic.name/?sesign ) в РЕГРУ, РЕГТАЙМ, Р01, РУЦЕНТР. А так же хостинг и SSL сертификаты.
V
На сайте с 10.01.2012
Offline
85
#5

var_damp отдает false, что и писал выше.

ошибка cURLа CURLE_RECV_ERROR

---------- Добавлено 12.05.2014 в 13:26 ----------

Возвращает код ошибки SSL read: errno -5961

bums
На сайте с 03.07.2006
Offline
449
#6

А https://site.ru открывается хотя бы в браузере, может http://site.ru?

siv1987
На сайте с 02.04.2009
Offline
427
#7

У ТСа апи какого-то банка который работает по https.

ТС, у вас выше есть две ссылки с примерами как с помощью curl отправить запрос с json, если это то что вам нужно.

V
На сайте с 10.01.2012
Offline
85
#8

Проблема решилась, на стороне сервера приемщика просто завтыкали открыть сайту доступ на отправку запросов.

SocFishing
На сайте с 26.09.2013
Offline
118
#9

За ТС. отпишу. Мало ли кто-то будет искать отправку для JS, делается это вот так

в заголовке скрипта который принимает запрос


<?php
header('Access-Control-Allow-Origin: http://site.ru'); // домен с которого поступает запрос
header('Access-Control-Allow-Origin: https://site.ru'); // разрешить для всех нужно вставить * вместо домена
//header('Access-Control-Allow-Credentials: true'); // полномочия, не писать при использовании *
header('Access-Control-Allow-Methods: POST, GET, OPTIONS'); // разрешенные методы

Конкретно по проблеме у ТС не могу сказать какого рода защита. По стандарту должно принимать.

★Сервис идентифицирует (https://socfishing.com/?utm_source=searchengines) посетителей вашего сайта и предоставляет их профили ВКонтакте, Телефон, Почта! Цены копеечные, работаем 8 лет.
siv1987
На сайте с 02.04.2009
Offline
427
#10
SocFishing:
в заголовке скрипта который принимает запрос

У ТС'a принимает запрос агрегата банка, каким образом вы туда полезете, сервер взломаете? ТС'у посоветовали по хорошему делать все проверочные на уровне сервере, хер его знает почему он решил делать на стороне клиента.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий