PHP Curl Error 35 Peer报告内部错误



我试图让PHP Curl使用以下代码工作:我拥有使用api的域,我可以对它运行的服务器进行任何更改。

<?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
$data = array("username" => "derped", "authid" => "987654321", "ipaddress" => "1.2.3.4", "apikey" => "1234567829");
$data_string = json_encode($data);
$url = 'https://www.somedomain.com/test/api.php';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: Content-Type: text/html'));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
if(curl_exec($ch) === false)
{
    echo curl_error($ch);
}
else
{
    echo 'ok';
}
curl_close($ch);
$received = json_decode($result);
$check = $received->{'good'};
echo $result;
echo $check;
?>

Curl返回错误:Peer报告它遇到内部错误。当我旋转域本身(https://www.somedomain.com)时,它返回相同的错误。即使我通过终端使用curl,它也会返回35个错误,但是当我尝试在没有HTTPS的情况下curl域时,它会返回找到的302,但由于我的域只有HTTPS,这不会是解决方案,它只是回显移动页面。我知道这与使用https的curl有关,但是https://www.google.com可以工作,所以我不知道从哪里开始…

以下是来自php.net的回答。显然,它应该有助于解决未知的协议问题…

如果你得到一个错误代码为35的错误提示"未知SSL协议错误连接到…",可能你使用了错误的密码。

试着把一堆密码精确到如下所示:

$arrayCiphers = array(
    'DHE-RSA-AES256-SHA',
    'DHE-DSS-AES256-SHA',
    'AES256-SHA:KRB5-DES-CBC3-MD5',
    'KRB5-DES-CBC3-SHA',
    'EDH-RSA-DES-CBC3-SHA',
    'EDH-DSS-DES-CBC3-SHA',
    'DES-CBC3-SHA:DES-CBC3-MD5',
    'DHE-RSA-AES128-SHA',
    'DHE-DSS-AES128-SHA',
    'AES128-SHA:RC2-CBC-MD5',
    'KRB5-RC4-MD5:KRB5-RC4-SHA',
    'RC4-SHA:RC4-MD5:RC4-MD5',
    'KRB5-DES-CBC-MD5',
    'KRB5-DES-CBC-SHA',
    'EDH-RSA-DES-CBC-SHA',
    'EDH-DSS-DES-CBC-SHA:DES-CBC-SHA',
    'DES-CBC-MD5:EXP-KRB5-RC2-CBC-MD5',
    'EXP-KRB5-DES-CBC-MD5',
    'EXP-KRB5-RC2-CBC-SHA',
    'EXP-KRB5-DES-CBC-SHA',
    'EXP-EDH-RSA-DES-CBC-SHA',
    'EXP-EDH-DSS-DES-CBC-SHA',
    'EXP-DES-CBC-SHA',
    'EXP-RC2-CBC-MD5',
    'EXP-RC2-CBC-MD5',
    'EXP-KRB5-RC4-MD5',
    'EXP-KRB5-RC4-SHA',
    'EXP-RC4-MD5:EXP-RC4-MD5');
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, implode(':', $arrayCiphers));

对我有用,对你也有用!注:用于PHP 5.4和cURL 7.26.0。

无法获得Curl工作,我决定使用file_get_contents和stream_context_create.

对其他选项感兴趣的:

客户:

$data = new stdClass();
$data->apikey = "1234567890";
$json_data = json_encode($data);
$post = file_get_contents('http://URL/api.php',null,stream_context_create(array(
    'http' => array(
        'method'           => 'POST',
        'content'          => $json_data,
    )
)));
if ($post) {
    echo $post;
} else {
    echo "POST failed";
}

API/Webservice:

$receive = fopen('php://input', 'r');
$received = stream_get_contents($receive);
$data = json_decode($received);
$apikey = $data->{'apikey'};
If($apikey == 1234567890)
{
    $response = array("good" => true);
    $goresponse = json_encode($response);
    print_r($goresponse);
}
else
{
    $response = array("good" => false);
    $goresponse = json_encode($response);
    print_r($goresponse);
}

注意,这些都是基本的,流将会出错。需要更多的参数取决于web服务的限制,祝你好运!

$arrayCiphers = array(
    'DHE-RSA-AES256-SHA',
    'DHE-DSS-AES256-SHA',
    'AES256-SHA:KRB5-DES-CBC3-MD5',
    'KRB5-DES-CBC3-SHA',
    'EDH-RSA-DES-CBC3-SHA',
    'EDH-DSS-DES-CBC3-SHA',
    'DES-CBC3-SHA:DES-CBC3-MD5',
    'DHE-RSA-AES128-SHA',
    'DHE-DSS-AES128-SHA',
    'AES128-SHA:RC2-CBC-MD5',
    'KRB5-RC4-MD5:KRB5-RC4-SHA',
    'RC4-SHA:RC4-MD5:RC4-MD5',
    'KRB5-DES-CBC-MD5',
    'KRB5-DES-CBC-SHA',
    'EDH-RSA-DES-CBC-SHA',
    'EDH-DSS-DES-CBC-SHA:DES-CBC-SHA',
    'DES-CBC-MD5:EXP-KRB5-RC2-CBC-MD5',
    'EXP-KRB5-DES-CBC-MD5',
    'EXP-KRB5-RC2-CBC-SHA',
    'EXP-KRB5-DES-CBC-SHA',
    'EXP-EDH-RSA-DES-CBC-SHA',
    'EXP-EDH-DSS-DES-CBC-SHA',
    'EXP-DES-CBC-SHA',
    'EXP-RC2-CBC-MD5',
    'EXP-RC2-CBC-MD5',
    'EXP-KRB5-RC4-MD5',
    'EXP-KRB5-RC4-SHA',
    'EXP-RC4-MD5:EXP-RC4-MD5');
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, implode(':', $arrayCiphers));

最新更新