从php中检索响应代码

从php中检索响应代码,php,http,curl,httpresponse,myob,Php,Http,Curl,Httpresponse,Myob,我试图使用cURL-PHP从响应头获取响应代码 当我发送请求时,这是MYOB AccountRight API返回的响应头: HTTP/1.1 200 OK Access-Control-Expose-Headers: Request-Context Cache-Control: must-revalidate, private Content-Encoding: gzip Content-Type: application/json;charset=utf-8 Date: Thu, 20 Ma

我试图使用cURL-PHP从响应头获取响应代码

当我发送请求时,这是MYOB AccountRight API返回的响应头:

HTTP/1.1 200 OK
Access-Control-Expose-Headers: Request-Context
Cache-Control: must-revalidate, private
Content-Encoding: gzip
Content-Type: application/json;charset=utf-8
Date: Thu, 20 May 2021 01:07:56 GMT
ETag: "XXXXXXXXX"
Expires: -1
Request-Context: appId=cid-v1:a4936349-ef26-4f8a-9268-XXXXXXXXX
Server: Microsoft-IIS/10.0
Vary: Accept-Encoding
X-AspNet-Version: 4.0.30319
X-Mashery-Message-ID: 2fc6b494-54e8-43e2-8bc4-XXXXXXXXX
X-Mashery-Responder: prod-j-worker-ap-southeast-2b-33.mashery.com
x-myobapi-elapsed: 1370
x-myobapi-requestid: bb0764c8-f62d-4848-bcae-XXXXXXXXX
X-Powered-By: ASP.NET
Content-Length: 1205
Connection: keep-alive
我已经尝试了来自的解决方案,但是我不会得到http代码

这是我获取帐户数据的代码:

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://ar1.api.myob.com/accountright/766d620e-a5eb-41c3-8343-XXXXXXXX/GeneralLedger/Account?$filter=Name%20eq%20\'Inventory\'%20or%20Name%20eq%20\'Cost%20Of%20Sales\'%20or%20Name%20eq%20\'Inventory%20Income\'',
  CURLOPT_HEADER => true,
  CURLOPT_NOBODY => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'x-myobapi-version: v2',
    'Accept-Encoding: gzip,deflate',
    'x-myobapi-key: '.$theAPIKey,
    'x-myobapi-cftoken: '.$theCFToken,
    'Authorization: Bearer '.$theAccessToken
  )
));

$response = curl_exec($curl);
$theInfo = curl_getinfo($response);
$http_code = $theInfo['http_code'];
curl_close($curl);
echo 'http code: ' . $http_code . '<br />';
echo '<pre>';
echo $response;
echo '</pre>';
$curl=curl_init();
curl_setopt_数组($curl,数组(
CURLOPT_URL=>'https://ar1.api.myob.com/accountright/766d620e-a5eb-41c3-8343-XXXXXXXX/GeneralLedger/Account?$filter=Name%20eq%20'存货\'%20或%20Name%20eq%20'成本%20%销售\'%20或%20Name%20eq%20'存货%20收入\',
CURLOPT_HEADER=>true,
CURLOPT_NOBODY=>正确,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_编码=>'',
CURLOPT_MAXREDIRS=>10,
CULLOPT_超时=>0,
CURLOPT_FOLLOWLOCATION=>true,
CURLOPT_HTTP_VERSION=>CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST=>“GET”,
CURLOPT_HTTPHEADER=>数组(
“x-myobapi-version:v2”,
'接受编码:gzip,deflate',
“x-myobapi-key:”.$theAPIKey,
“x-myobapi-cftoken:”.$theCFToken,
“授权:承载者”。$theAccessToken
)
));
$response=curl\u exec($curl);
$theInfo=curl\u getinfo($response);
$http_code=$theInfo['http_code'];
curl_close($curl);
回显“http代码:”$http_代码。”
; 回声'; 回音$应答; 回声';

当我回显http代码时,不会打印任何内容。

我认为您需要将
$curl
传递给
curl\u getinfo
方法,而不是
$response


你可以在这里看到文件

print\r($theInfo)
并查看其中包含的内容。您好,不会打印任何内容。您好,谢谢您的回复。我现在可以检索http代码。@nkm您应该调整错误报告设置;这个错误应该已经生成了
PHP警告:curl\u getinfo()期望参数1是resource,bool given
$response = curl_exec($curl);
$theInfo = curl_getinfo($curl);
$http_code = $theInfo['http_code'];