【发布时间】:2023-03-19 05:57:02
【问题描述】:
我想使用 curl 和 php 对 API 进行 404 测试
虽然对令牌生成端点 (/api/Utilities/StashData) 的有效请求将收到包含用于 Leap 的令牌的 HTTP 200 响应,但无效请求将收到 HTTP 400 响应(错误请求)。如果您的系统从 API 收到 HTTP 400 响应,则不得尝试继续 Leap。此响应的内容将包含描述验证错误的 JSON 序列化对象,如下例所示:
[
{
"Key": "CapeConsumers.TrackerNumber",
"Errors": [
{
"ErrorCode": "CC002",
"Description": "The value is required."
}
]
}
]
如您所见,响应包含一个对象数组,其中每个对象都有一个 Key 属性,该属性引用提交给服务的键,以及一个描述值被拒绝的原因的 Errors 属性。 ErrorCode 值是预定义的,保证永远不会改变,Description 对于某些错误是动态的,主要是为了帮助调试
代码
CC001
无效值。
该值不符合为 钥匙。
CC002
该值是必需的。
请求中省略了必需的值。发送 null 或 a 所需值的空白字符串也会导致此错误 (除非通过支持将空白字符串定义为有效 文档)。
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,而不是在 if 语句中退出 400 错误。
我不确定我的逻辑,因为这是我第一次尝试 curl
【问题讨论】:
-
不好的反应是什么?页面未找到或API返回时会出现404。
-
对不起,我的意思是 400,更新了代码
标签: php json validation curl