【问题标题】:cURL call return status code 0 on the SERVERSERVER 上的 cURL 调用返回状态码 0
【发布时间】:2019-01-30 16:16:21
【问题描述】:

我正在尝试使用 curl 方法进行 API 调用。

我已经尝试使用来自我想要集成的应用程序创建者的演示项目在 MAMP 上进行相同的调用,它都是 PHP 代码......现在在服务器上我刚刚包含了 PHP 库并尝试用 PHP 调用,但我不知道为什么我得到状态码 0。

private function _cURL($url, $data, $request, $headAccept) {
        $headers = array($headAccept, "Authorization: Basic " . $this->hash);

$ch = curl_init($url);
// curl_setopt($ch, CURLOPT_MUTE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_VERBOSE, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
if ( !empty($data) ) {
    $headers[] = "Content-Type: application/json; charset=utf-8";
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
}
if ( !empty($request)) {
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $request);
}
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

// debugging
$isDebug = self::DEBUG_ON_ERROR;
if ( !empty($isDebug) ) {
    $debug = array(
        'URL: '     => $url,
        'data: '    => $data,
        'headers: ' => $headAccept,
    );
    echo '<pre>' , print_r($debug, true), '</pre>';
}

return $ch;

}

我不知道该怎么办..因为状态只有 0.. 没有像 403、404 等。

感谢您的帮助。

编辑

        $ch = $this->_cURL($url, $data, $request, $headAccept);        
        $return = curl_exec($ch);
        $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);

编辑 2 调用print_r(curl_getinfo($ch)); 后响应为:

(
    [url] => https://ws.smartbill.ro:8183/SBORO/api/estimate
    [content_type] => 
    [http_code] => 0
    [header_size] => 0
    [request_size] => 0
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.007306
    [namelookup_time] => 0.007255
    [connect_time] => 0
    [pretransfer_time] => 0
    [size_upload] => 0
    [size_download] => 0
    [speed_download] => 0
    [speed_upload] => 0
    [download_content_length] => -1
    [upload_content_length] => -1
    [starttransfer_time] => 0
    [redirect_time] => 0
    [redirect_url] => 
    [primary_ip] => 
    [certinfo] => Array
        (
        )

    [primary_port] => 0
    [local_ip] => 
    [local_port] => 0
)

编辑 3

我从生产环境中下载了该项目,并使用php artisan:serve 在本地主机上进行了测试,并且可以正常工作......服务器问题也是如此......但我不知道该怎么办......

【问题讨论】:

  • 你好,已编辑帖子
  • var_dump($return); 检查结果,为什么你不在你的函数中使用$return = curl_exec($ch);,在你的函数中移动它并返回结果不是$ch
  • 请检查stackoverflow.com/questions/10227879/…也许有帮助。
  • 你可以通过curl_errno($ch)查看curl错误
  • @vivek_23 我不认为 IP 被列入黑名单......但我不知道防火墙......我该怎么办?我可以访问 cPanel。

标签: php laravel curl


【解决方案1】:

尝试使用我拥有的这个功能

public static function get($url) {

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($ch, CURLOPT_TIMEOUT_MS, 1000);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_VERBOSE, TRUE);

    $result = curl_exec($ch);
    $info = curl_getinfo($ch);
    // dd($info);

    curl_close($ch);
    $result =  json_decode($result, true);
    return $result;
}

它在我的 laravel 项目中运行良好。

看看有没有帮助!

【讨论】:

    猜你喜欢
    • 2017-10-09
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多