gpt4 book ai didi

php - 如何处理 CURL 中服务器重置的连接

转载 作者:搜寻专家 更新时间:2023-10-31 22:05:12 24 4
gpt4 key购买 nike

我正在向需要 token 身份验证的远程服务器(Vebra Api)发出 curl 请求。据我所知,服务器一小时只允许一个 token 请求。我试图辨别我当前的 token 当前是否有效。

我的方法是发出请求并检查状态是 200 还是 401。如果我有一个有效的 token ,我可以使用 curl_getinfo($ch) 成功检查 curl 信息正确的状态码。如果我的 token 无效,但脚本在我无法处理错误的情况下终止 - Firefox 在我处理错误或处理任何其他代码之前报告The connection was reset

这是我的代码还是服务器的问题?在这种情况下,是否有办法告诉 curl 函数调用某个函数?

代码如下:

// an invalid token
$token = '1sdfsdfds1RQUlJTTU1GRVdVT0tYUkJsdfsdfsdfdsfsdSEg=';

//Initiate a new curl session
$ch = curl_init($url);

//Don't require header this time as curl_getinfo will tell us if we get HTTP 200 or 401
curl_setopt($ch, CURLOPT_HEADER, 0);

//Provide Token in header
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '. $token ) );

// Tell curl to return a string
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

//Execute the curl session
$curlResp = curl_exec($ch);

// -----------------------------------------------------------------------------
// with invalid token script ends here with no chance for me to handle the error
// such as below
// -----------------------------------------------------------------------------

if ($curlResp === FALSE) {
die('yarrrghhh! :(');
//throw new Exception();
}

//Store the curl session info/returned headers into the $info array
$info = curl_getinfo($ch);

//Check if we have been authorised or not
if($info['http_code'] == '401') {

echo 'Token Failed';

var_dump($info);
var_dump($curlResp);

}
elseif ($info['http_code'] == '200') {

echo 'Token Worked';

var_dump($info);
var_dump($curlResp);

}

//Close the curl session
curl_close($ch);

最佳答案

我认为 $curlResp 只是一个字符串

尝试使用

if ($curlResp == FALSE) {
die('yarrrghhh! :(');
//throw new Exception();
}

我已经测试了这段代码并通过 php-cli 和它上面的 var_dump 返回了一个字符串..这很奇怪,因为 php 文档说的不同

关于php - 如何处理 CURL 中服务器重置的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19892658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com