Я новичок в php, поэтому не судите строго.
Имеется функция createOrEditUser(); Помимо нее есть функции, которые построены по тому же запросу, но не POST, а GET. Функции вызываю из другого файла с помощью echo; Все работает, выводит как надо. Но когда в этой функции делаю POST запрос, то происходит ошибка. Все ключи для использования API правильные, все работает нормально(на основе рабочей ф-ции написал). Ошибку даже не выводит, просто мой файл test.php с echo перестает даже выдавать результат выполнения других функций и просто белый экран.
Вот код:
public function createOrEditUser()
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, self::url.'customers/create_or_update?access_token='.self::GetToken()'&organization='.self::GetOrgList());
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, '{"customer":{"phone":"+79274728106","name":"Тест"}}');
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8'));
$out = curl_exec($ch);
curl_close($ch);
return $out;
}
URL правильный. JSON валидный.
В случае ошибки curl_exec
вернёт false
. Узнать что пошло не так, поможет curl_error
. Кроме того, тело ответа может быть пустым (это же POST запрос).
Вообще лучше один раз написать универсальную функцию запроса (или использовать готовую)
function request($method, $url, array $headers, $body = '', $opts = []) {
$curl = curl_init($url);
curl_setopt_array($curl, $opts + [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POSTFIELDS => $body,
]);
$result = curl_exec($curl);
if ($result === false) {
$error = curl_error($curl);
curl_close($curl);
throw new \Exception($error);
}
$headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$responseHeaders = substr($result, 0, $headerSize);
$headers = array_filter(explode("\r\n", $responseHeaders));
$responseBody = substr($result, $headerSize);
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
$response = [
0 => $code,
'code' => $code,
1 => $headers,
'headers' => $headers,
2 => $responseBody,
'body' => $responseBody,
];
curl_close($curl);
return $response;
}
try {
list($code, $headers, $body)= request(
'POST',
self::url . 'customers/create_or_update?access_token=' . self::GetToken() . '&organization=' . self::GetOrgList(),
['Content-Type: application/json; charset=utf-8'],
'{"customer":{"phone":"+79274728106","name":"Тест"}}'
);
} catch (\Exception $e) {
echo 'FAIL: ' . $e->getMessage();
}
if ($code === 200) {
echo 'OK';
} else {
echo 'FAIL: ' . $code;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
есть функция стандартная wp_insert_post() как можно вставить пост с помощью этой функции через bash
Есть объект с несколькими полями который отправляется как Json запрос на сервер
Можно ли проверить непосредственно тип самого параметра в классе generic? типа этого?