php - 如何设置 CURLINFO_HTTP_CODE

  显示原文与译文双语对照的内容
0 0

我正在构建一个API来存储注册用户的数据。 数据通过 CURL with an api-key 我需要检查api密钥是否有效。 如果无效,则返回一个带有 CURLINFO_HTTP_CODE的错误消息。 我返回邮件,但 ,CURLINFO_HTTP_CODE为 200. 我需要将它更改为 500. 怎么做我使用了英镑的框架

数据POST代码。


private static function postJSON($url, $data) { 

 $jsonData = array (
 'json' => json_encode($data)
 );//data array contains some data and api-key

 $jsonString = http_build_query($jsonData);
 $http = curl_init($url);

 curl_setopt($http, CURLOPT_HEADER, false);
 curl_setopt($http, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($http, CURLOPT_POST, true);
 curl_setopt($http, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
 curl_setopt($http, CURLOPT_HTTPHEADER, array(
 'Content-Type: application/x-www-form-urlencoded',
 'Content-Length: '.strlen($jsonString)
 ));
 curl_setopt($http, CURLOPT_POSTFIELDS, $jsonString);

 $responseBody = curl_exec($http); 
 $statusCode = curl_getinfo($http, CURLINFO_HTTP_CODE);
 echo $statusCode;//need to get 500 if the api key is not registerd

 if($statusCode> 200) {
 error_log('BugTracker Warning: Couldn't notify ('.$responseBody.')');
 } 
 curl_close($http); 

 return $statusCode;
}

下面是对CURL操作做出响应的代码


$apiKey = $event->apiKey;
//Check if the project for the given api key exists. if not do not insert the bugs
 $projectDetails = $bt->getProjectDetails($apiKey);
 if(count($projectDetails)>0){
 print_r($projectDetails);
 foreach($event->exceptions as $bug){
 $errorClass = $bug->errorClass;
 $message = $bug->message;
 $lineNo = $bug->lineNo;
 $file = $bug->File;
 $createdAt = $bug->CreatedAt;

//saving to db
 $bt->saveData($releaseStage,$context,$errorClass,$message,$lineNo,$file,$createdAt,$apiKey);
 }
 }
 else{
//show error with 500 error code
 http_response_code(500);
 echo"Invalid project";
 }

时间: 原作者:

0 0

你正在寻找的是 $app->halt() 。 你可以在Slim文档的路由帮助器中找到更多信息。

应用程序方法的细 halt() 将立即返回一个带有给定状态代码和正文的HTTP响应。 这里方法接受两个参数: HTTP状态代码和可选消息。

这样做非常容易返回 500和消息,但是你可能考虑使用 $app->notFound(),因为你试图发送请求的项目,而不是服务器错误,而不是服务器错误( 5xx ) 。

原作者:
0 0

你可以将 header 设置为 500


header("HTTP/1.1 500 Internal Server Error");

或者尝试使用尝试捕捉并引发错误


throw new Exception("This is not working", 500);

...