я хочу сделать 404 тестирование в API с помощью локон и PHPPHP - CURL - Получение HTTP-код, если/иначе, чтобы проверить
В то время как действительные запросы на маркер поколения конечной точки (/ API/Утилиты/StashData) получат ответ HTTP 200, содержащий токен для использования с Leap, неверные запросы получат ответ HTTP 400 (Bad Request). Если ваша система получает ответ HTTP 400 от API, она не должна пытаться перейти к Leap. Содержание этого ответа будет содержать JSON-сериализовать объект, описывающий ошибку (ы) проверки, согласно следующему примеру:
[
{
"Key": "CapeConsumers.TrackerNumber",
"Errors": [
{
"ErrorCode": "CC002",
"Description": "The value is required."
}
]
}
]
Как можно видеть, ответ содержит массив объектов, где каждый объект имеет свойство Key, которое ссылается на ключ, переданный службе, и свойство Errors, описывающее причину (причины), значение было отклонено. Значения ERRORCODE предопределены и гарантированно никогда не изменится, описание динамична для некоторых ошибок и существует в основном при отладке
Коды
CC001
недопустимое значение.
Значение не соответствует одному или нескольким правилам проверки, определенным для ключа.
CC002
Значение требуется.
Требуемое значение было исключено из запроса. Отправка нулевой или пустой строки для требуемого значения также приведет к этой ошибке (если только пустая строка не была определена как действительная, поддерживая документацию ).
CC003
Значение не правильного типа. Ожидалось {0}, найдено {1}.
Система ожидала, что значение будет одного типа, но был отправлен другой тип . (Например, номер был послан вместо строки)
CC004
Происхождение не является действительным для указанной кампании.
Кампании связаны с конкретными интегрирующими сторонами. Если интегрирующая сторона использует номер трекера, который ему не назначен, эта ошибка будет возвращена.
CC005
кампания не в данный момент.
Номер трекера ссылается на кампанию, которая либо не началась, либо уже подошла к концу.
Вот код, который я пробовал.
$endpointUser = "myuser";
//
$endpointPassword = "mypass";
//
$url = "https://webservices_test.capeconsumers.co.za/api/Utilities/StashData";
$iframeUrl = "https://onlineapplicationtest.capeconsumers.co.za/Bridge/CapeConsumersSACommercial?token=";
$fields = array(
"User.IdentityNumber"=> $_GET['security_phrase'],
"CapeConsumers.TrackerNumber"=> "6E273247DB4840G3",
"Call.AgentReference"=> $_GET['user'] ,
"Call.RecordingReference"=> $_GET['security_phrase']
);
$process = curl_init($url);
curl_setopt($process, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($process, CURLOPT_HEADER, 0);
curl_setopt($process, CURLOPT_USERPWD, $endpointUser . ":" . $endpointPassword);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_POST, 1);
curl_setopt($process, CURLOPT_POSTFIELDS, json_encode($fields));
curl_setopt($process, CURLOPT_RETURNTRANSFER, TRUE);
$token = curl_exec($process);
curl_close($process);
$token = str_replace('"','',$token);
$httpCode = curl_getinfo($process, CURLINFO_HTTP_CODE);
if($httpCode == 400) {
echo "there was an error"; exit;
}
?>
<iframe src="<?php echo $iframeUrl . $token; ?>" width="100%" height="800"></iframe>
Моя проблема заключается в том, что если я намеренно дать ему плохой ответ, он все равно будет генерировать IFRAME вместо того, чтобы выходить на, если заявление для ошибки 400.
Я уверен в моей логике, так как это моя первая попытка завитка
Что будет плохой ответ? 404 произойдет, если страница не найдена или не возвращается API. –
Извините, я имел в виду 400, обновил код –