首页 文章

php curl issue curl_init上的资源ID#2

提问于
浏览
0

php curl issue curl_init上的资源ID#2:

$url = "https://example.com:4433/deviceservice/authorize?login=query"; // URL JSON
        $ch = curl_init($url);
        echo $ch; //write Resource id # 2
        if( $ch )
        {
            curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, TRUE);
            $json = curl_exec( $ch );
            $json = json_decode($json);
        } else {
            echo 'nothing';
            }

我究竟做错了什么?

3 回答

  • 1

    尝试使用curl_error($ ch)和echo来诊断错误

    $ch= curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_HEADER, 0);
    )                                                                       
    );     
    
    $response = curl_exec($ch);
    $err_status = curl_error($ch);
    echo $err_status;
    curl_close($ch);
    
  • 2

    curl_init 成功时返回 cURL 句柄,错误时返回FALSE . 因此 echo $ch; 将返回类似资源ID#2的内容 .

    http://php.net/manual/en/function.curl-init.php

    你必须尝试这样的事情

    $url = "https://example.com:4433/deviceservice/authorize?login=query"; // URL JSON
    
    $ch = curl_init();
    
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, TRUE);
    $json = curl_exec( $ch );
    $json = json_decode($json);
    curl_close($ch);   
    
    if(empty($json)){
       echo 'nothing';
    }
    
  • 1

    如果您不在使用SSL的主机上,则应绕过SSL验证

    <?php
        $url = "https://example.com:4433/deviceservice/authorize?login=query"; 
        $ch = curl_init($url);
        echo $ch; //write Resource id # 2
        if( $ch )
        {
            curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 );
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
            $json = curl_exec( $ch );
            $json = json_decode($json);
        } else {
            echo 'nothing';
        }
    

相关问题